![0c013b97aa260bf7b32e89a084b9e9f3.png](https://i-blog.csdnimg.cn/blog_migrate/13e77baa39478c3422b185ca1e3b52b8.jpeg)
今天的学习从填昨天留下的坑开始,昨天留下了相册选择照片真机无法显示的坑,网上查了查,说了一些文件路径的原因以及容器显示长宽的设置问题,先不管对不对,上我的出错代码
var that = this
wx.chooseImage({
count: 1,
sizeType: ['original', 'compressed'],
sourceType: ['album', 'camera'],
success(res) {
// tempFilePath可以作为img标签的src属性显示图片
const tempFilePaths = res.tempFilePaths
console.log(res.tempFilePaths)
that.setData({
imgurl: tempFilePaths
})
打印输出之前是copy的官网示例代码,count:1设置只能选择一张照片,res.tempFilePaths是执行成功后回调函数返回的文件路径参数。为什么模拟器能显示,真机无法显示呢?经过仔细排查才发现,tempFilePaths返回的是一个文件路径的数组,有多少张图片数组长度就是多少。而现在只有一张,在tempFilePaths直接引用的时候就没有报错。正确的做法是要加上数组的索引,把代码改为
that.setData({
imgurl: tempFilePaths[0]
})
就正确了,在我的Samsung C7 Pro在能够正确显示手机相册里的照片。
填坑之后继续学习,uploadFile这个API,执行了官网的示例代码后提示出域名不规范
wx.uploadFile({
url: 'http://www.wxserver.com',
header:{
"content-type":"multipart/form-data"
},
filePath: res.tempFilePaths[0],
代码中域名是我自己在电脑上搭的Apache虚拟主机,终于碰到https的问题了,好吧,我去搭自己的https服务器,于是在网上搜了一番,按着教程一步步搭好了https虚拟主机。也花了大叔三个小时,年龄大了手脚慢。幸好我的Apache直接就在C:Apache24路径里,这样才省了很多修改配置文件的麻烦。贴一个简略的安装步骤:
1、 确认是否安装ssl模块
有
2、 生成证书和密钥
window下
步骤1:生成密钥
命令:openssl genrsa 1024 > server.key
步骤2: 生成证书请求文件
命令:openssl req -config C:Apache24confopenssl.cnf -new -key server.key > server.csr
步骤3: 生成证书
命令:openssl req -config C:Apache24confopenssl.cnf -x509 -days 365 -key server.key -in server.csr > server.crt
这一步有一个错误提示,
C:Apache24bin>openssl req -x509 -days 365 -key server.key -in server.csr > ser
ver.crt
Can't open C:Program FilesCommon FilesSSL/openssl.cnf for reading, No such file or directory 12200:error:02001003:system library:fopen:No such process:cryptobiobss_file.c:74:fopen('C:Program FilesCommon FilesSSL/openssl.cnf','r') 12200:error:2006D080:BIO routines:BIO_new_file:no such file:cryptobiobss_file.c:81:
大概是说在C:Program FilesCommon Files
里面没有ssl文件夹和相关文件openssl.conf。当时觉得完了,后来看见bin下面还是生成了一个server.crt
把得到的server.key和server.crt文件拷贝到apache的对应目录
3、 配置apache
l 修改httpd-ssl.conf文件
注意在此文件中配置证书和密钥
SSLCertificateFile /apache/conf/server.crt
SSLCertificateKeyFile /apache/conf/server.key
虚拟机设置
NameVirtualHost *:443
…………
l 修改httpd.conf文件
步骤1:打开ssl模块
LoadModule ssl_module modules/mod_ssl.so
步骤2:引入ssl配置文件
Include “/apache/conf/httpd-ssl.conf”
步骤3:如果你配置的虚拟机,注意一下端口的访问接受情况
NameVirtualHost *:80
…………
4、 重新启动apache
重启失败报错说httpd-ssl.conf文件里下面几行出错
C:Apache24bin>httpd
AH00526: Syntax error on line 92 of C:/Apache24/conf/extra/httpd-ssl.conf:
SSLSessionCache: 'shmcb' session cache not supported (known names: ). Maybe you
need to load the appropriate socache module (mod_socache_shmcb?).
我看了看是log路径,也没管那么多,直接#号注释掉,再重启,成功了,浏览器里访问了一下,同样的http://www.wxserver.com域名,http和https都能访问。
再呼出微信工具,再执行上传代码,悲剧了,还是说域名有问题!