小程序 - 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开发服务器部署

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,768评论 19 139
  • 腾讯,疼讯,很疼. 请慎重看腾讯给出的文档,最好做一个笔记. 我只能说我能力有限,在腾讯云小程序的文档中跳了n天....
    achar阅读 4,371评论 0 0
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 175,807评论 25 709
  • 「小程序」这个划时代的产品发布快一周了,互联网技术人都在摩拳擦掌,跃跃欲试。可是小程序目前还在内测,首批只发放了 ...
    EarlGrey阅读 12,271评论 19 97
  • 在程序开发过程中,Bug可以说难以避免。如果定位Bug、分析Bug可以说是快速解决问题的关键。而定位Bug最重要的...
    就是一个个人笔记阅读 5,865评论 0 4