改良OpenSSL暗许编写翻译出的动态库文件名称

这个问题很多小伙伴问过我,我看很多小伙伴自己改了,还有很多不会改的,今天电脑技术网的小编就做个详细教程吧!先来一个没改之前编辑器下面的图:WWW.DNJISHU.com

***********************************如果不能正确显示*******************************************************

在使用百度富文本编辑器上传图片的过程中,如果是有一台单独的图片服务器就需要将上传的图片放到图片服务器,比如在a.com的编辑器中上传图片,图片要保存到img.com,这就涉及到跨域上传图片,而在ueditor官方文档中说不支持单图上传的跨域,网上查了一下各种花里胡哨,一顿操作猛如虎,比如加document.domain,配置全域名的等等都是然并卵,没搞清楚什么是跨域就敢定义为跨域,仔细研究了一下ueditor的demo文件,想出了一个折中办法,很简单只需要修改demo中两个地方的代码外加写一个上传接口即可:

1.4)执行命令
nmake -f msntdll.mak
这样生成的动态库文件名就是期望的名字,不是OpenSSL 默认的文件名。

这个是修改之后的,也就是说在红线位置加上checked=checked
就行了。注意前面有个空格!

  1.  在res/drawable下面,添加selector (如 check_state.xml)文件:

2.修改完访问路径还需要修改ueditor/php/Uploader.class.php文件,找到upFile()方法,此方法就是demo中上传文件的主处理方法,修改这个上传方法比做什么代理页面、加js什么的更简单也更好理解,就算多个页面引入也没得问题:

2.4)执行命令
nmake -f msntdll.mak
这样生成的动态库文件名就是期望的名字,不是OpenSSL 默认的文件名。

这是做好后的,远程保存图片已经默认勾选了,取第1张上传图片为标题图片,虽然没显示1,但是已经生效了!

<?xml version=”1.0″ encoding=”utf-8″?>  
<selector
xmlns:android=”;  
    <item android:state_checked=”true”   
        android:drawable=”@drawable/checked”
/><!–选中时效果–>  
    <item android:state_checked=”false”   
        android:drawable=”@drawable/unchecked”
/><!–未选中时效果–>  
  <!– 修改成你自己的图片就可以了 –>  
</selector>  

图片 1

1.1) 在 OpenSSL 的源代码所在目录下,用文本编辑器(比如 Notepad++)打开
Configure 文件,搜索字符串 libeay32(不区分大小写),大概位置在第
1978、1979 行,可以找到如下内容:
#if defined(CRYPTO)
     VALUE “InternalName”, “libeay32\0”
     VALUE “OriginalFilename”, “libeay32.dll\0”
将其中所有的 libeay32 字符串替换为 libeay_x86

下面开始进行修改,按照下面的图示进入自动设置

         系统给CheckBox了一个默认的背景,只需设置下 CheckBox的背景即可

图片 2

用文本编辑器修改文件 ssleay32.def,找到下面的行:
LIBRARY         SSLEAY32
将这一行改为:
LIBRARY         SSLEAY_X64

这个是没修改之前默认编辑器的字段代码:

  1.   先导入  checked.png 和 unchecked.png 两张图片
    private function upFile()    {        $file = $this->file = $_FILES[$this->fileField];        if (!$file) {            $this->stateInfo = $this->getStateInfo("ERROR_FILE_NOT_FOUND");            return;        }        if ($this->file['error']) {            $this->stateInfo = $this->getStateInfo($file['error']);            return;        } else if (!file_exists($file['tmp_name'])) {            $this->stateInfo = $this->getStateInfo("ERROR_TMP_FILE_NOT_FOUND");            return;        } else if (!is_uploaded_file($file['tmp_name'])) {            $this->stateInfo = $this->getStateInfo("ERROR_TMPFILE");            return;        }        $this->oriName = $file['name'];        $this->fileSize = $file['size'];        $this->fileType = $this->getFileExt();        $this->fullName = $this->getFullName();        $this->filePath = $this->getFilePath();        $this->fileName = $this->getFileName();        $dirname = dirname($this->filePath);        //检查文件大小是否超出限制        if (!$this->checkSize {            $this->stateInfo = $this->getStateInfo("ERROR_SIZE_EXCEED");            return;        }        //检查是否不允许的文件格式        if (!$this->checkType {            $this->stateInfo = $this->getStateInfo("ERROR_TYPE_NOT_ALLOWED");            return;        }        //创建目录失败        if (!file_exists($dirname) && !mkdir($dirname, 0777, true)) {            $this->stateInfo = $this->getStateInfo("ERROR_CREATE_DIR");            return;        } else if (!is_writeable($dirname)) {            $this->stateInfo = $this->getStateInfo("ERROR_DIR_NOT_WRITEABLE");            return;        }        //移动文件        if (!(move_uploaded_file($file["tmp_name"], $this->filePath) && file_exists($this->filePath))) { //移动失败            $this->stateInfo = $this->getStateInfo("ERROR_FILE_MOVE");        } else { //移动成功            $this->stateInfo = $this->stateMap[0];        }     /**      *此处上面的代码都是demo内的源代码不需要改,下面才是我加上的需要敲黑板划重点的地方,说一下思路,上面的代码会在本地生成上传的图片内容,然后我们就可以拿到上传的文件的全路径,      *拿到全路径再调用事先封装好的上传接口上传到图片服务器即可,由于第一步配置了图片服务器的域名,所以最后返回给编辑器窗口的图片路径已经是带域名的全路径啦      */     $imgPath = '@'.$dirname.'/'.$this->fileName;//获取生成的本地文件完整路径           //发送请求的参数     $data = [            'myFile'=>$imgPath,            'imgType'=>4        ];     $serverUrl = 'http://img.com/api/image.action'; //请求地址        $ch = curl_init(); //初始化        curl_setopt($ch, CURLOPT_URL, $serverUrl);           curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);        curl_setopt($ch, CURLOPT_POST, true);        //https协议需要以下两行,否则请求不成功        curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);        curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);        //post方法所需要的参数        curl_setopt($ch, CURLOPT_POSTFIELDS, $data);        curl_setopt($ch, CURLOPT_HTTPHEADER, array;        $result = curl_exec($ch);        curl_close($ch);        $result = json_decode($result,true); //将接口返回的json数据转为数组        $this->fullName = $result['imgUrlNormal']; //重置要返回给编辑器窗口的图片路径,这一步可以让图片在编辑器内正常显示图片    }

    在 64 位 Win7 上编译,使用 Visual Studio 2010,执行命令 nmake -f
msntdll.mak 时不管是编译 32 位库文件还是 64
位库文件,都曾遇到如下错误:
LINK : fatal error LNK1123: 转换到 COFF 期间失败: 文件无效或损坏

同时居右和替换图片:

3.改完这两个地方之后,再自己写一个上传图片的接口啦,将上面的请求地址缓存你的接口地址,比较简单也有一堆的例子,我这里就不贴出来了,这样三步下来不出意外已经可以跨域上传图片了,无论是单图还是多图都可以,既简单好理解又方便!!!

用文本编辑器修改文件 ntdll.mak,找到下面三行:
E_EXE=openssl
SSL=ssleay32
CRYPTO=libeay32
修改为:
E_EXE=openssl
SSL=ssleay_x86
CRYPTO=libeay_x86
注意第一行不用修改,改的是第二、第三行。

发表评论

电子邮件地址不会被公开。 必填项已用*标注