小程序 - wx.uploadFile

问题一:
Failed to load image http://qcloudtest-XXXXXX.cosundefined.myqcloud.com/1511574499754-BJh1nrLeM.jpg
net::ERR_NAME_NOT_RESOLVED
问题二: 403问题

小程序开发之:Wafer2 快速开发 Demo详解

第一步, 通过小程序的微信公众平台启用腾讯云开发

网址:https://cloud.tencent.com/document/product/619/11447

第二步 下载Demo到本地

从github上下载demo代码到本地目录项目地址:

https://github.com/tencentyun/wafer2-quickstart-nodejs

代码已经fork到我的github上.如果以上链接不是代码可以直接使用:

https://github.com/MrParty/wafer2-quickstart-nodejs

git clone https://github.com/tencentyun/wafer2-quickstart-nodejs.git

进入git目录执行(本地需要有node环境.未安装的请百度)

# 切换到 server 文件夹
cd server
# 安装依赖
npm install

打开小程序开发工具
下载地址

第三步, 修改配置参数(完成第一步操作)

1、打开/server/config.js, 修改数据库密码为小程序的appid.

2、点击右上角的上传腾讯云查看腾讯云状态.

3、选择复制开发环境request域名.

4、打开/client/config.js 修改主机名.

5、至此小程序基于腾讯云的开发部署完成…. 然….

6、点击登录, 成功!

7、点击上传图片??? ,图片哪里去了.出问题了 好,这个后面再说。

8、打开信道/发送消息,成功

图片问题分析

1、打开小程序的控制台 console. 发现一有一个错误提示:

[Failed to load image](https://link.jianshu.com/?t=https://images2018.cnblogs.com/blog/838361/201711/838361-20171125124159968-571510832.png)

[http://qcloudtest-XXXXXX.cosundefined.myqcloud.com/1511574499754-BJh1nrLeM.jpg](https://link.jianshu.com/?t=http://qcloudtest-xxxxxx.cosundefined.myqcloud.com/1511574499754-BJh1nrLeM.jpg)

net::ERR_NAME_NOT_RESOLVED

qcloudtest-XXXXXX.cos`undefined`.myqcloud.com, undefined, 什么鬼,为什么会出现这个玩意?

从连接字样上看是上传到腾讯的cos服务器上了.
  1. 打开腾讯后台进入cos服务器登录地址

有刚才上传的文件. bucket是qcloudtest, 文件名是:1511574499754-BJh1nrLeM.jpg

3、问题出在哪里了? 打开cos上的文件信息

看见鬼了没有.

小程序控制台打印出的是:

qcloudtest-XXXXXX.cosundefined.myqcloud.com

而cos上的是

qcloudtest-XXXX.cosgz.myqcloud.com

好好的一个标准初始化小程序,竟然闹这样.

4、 继续,看看服务器配置文件

打开服务器配置文件 /server/config.js 腾讯云的对象服务器cos配置是这样的.

哦? 默认cn-south华南, bucket是qcloudtest, 继续打开See,看看里面的说明把.

https://cloud.tencent.com/document/product/436/6224

终于在适用于 JSON API中找了说明.

undefined为地域简称,gz是广州(华南)的检测.

cos控制台确定qcloudtest是在广州.

话又说回来了, 那cn-south又是什么呢?

https://cloud.tencent.com/document/product/436/6224

文档中未做说明.

5、既然是上传的问题,那就顺着上传的路,继续网上找.

上传接口在: /server/controllers/uploads.js

里面有引用了: /server/qcloud.js

里面初始化了:/server/config.js, 还引用了wafer-node-sdk

翻翻wafer-node-sdk看看.

打开: /server/node_modules/wafer-node-sdk(在sublime或者其他工具中打开)

找到上传相关的js: /server/node_modules/wafer-node-sdk/lib/upload/index.js

在wafer-node-sdk包中图片返回imgUrl:[http://]

config.cos.fileBucket−{config.qcloudAppId}.cos

regionMap[config.cos.region].myqcloud.com/

{imgKey},

是根据regionMap中的地址获取的, 而cn-south并不在regionMap中.

6、修改/server/config.js

将cos的region改为与cos服务器的地址相对应的得与的regionMap的key.

重新上传测试代码(腾讯云->上传测试代码)

测试上传图片. 我能说又出现新的问题了吗!!!!!!! (在….疯….中… 凌乱)

7、继续, 解决403问题.

复制图片链接到chrome中,并打开开发者模式

发现返回json错误,并且报403错误. 是无权限访问cos服务器. json提示需要签名. 这个通常是服务器配置的问题.

返回腾讯云cos控制台登录腾讯云在云产品中找到对象存储, 看到在基础配置中的访问权限是"私有读写",将其改为"公有读私有写

8、打开小程序,上传图片. OK

感谢您的阅读! 可能有错误欢迎指正交流!

原文:小程序基于疼讯qcloud的nodejs开发服务器部署

你可能感兴趣的:(小程序 - wx.uploadFile)