微信多图上传的问题

复制代码
 1 document.querySelector('#upload_img').onclick = function () {
 2         wx.chooseImage({
 3             success: function (res) {
 4                 var i = 0, length = res.localIds.length;
 5                 if (length == 0) {
 6                     alert('请先选择图片');
 7                     return;
 8                 }
 9                 var server_id_list = [];
10                 function upload() {
11                     //for (var i = 0, length = res.localIds.length; i < length; i++) {
12                     wx.uploadImage({
13                         localId: res.localIds[i],
14                         success: function (res) {
15                             i++;
16                             server_id_list.push(res.serverId);
17                             $.Malert('已上传:' + i + '/' + length);
18                             if (server_id_list.length == length) {
19                                 //$.Malert('down:' + server_id_list.length);
20                                 downloadWxPic(server_id_list);
21                             }
22                             if (i < length) {
23                                 upload();
24                             }
25 
26                         },
27                         fail: function (res) {
28                             alert(JSON.stringify(res));
29                         }
30                     });
31                     //}
32                 }
33                 upload();
34             }
35         });
36     };
View Code
复制代码

千万不要使用for循环进行图片上传,而是要像现在一样用递归的方法进行上传。

不然会在苹果手机上永远只会上传一张图片。

 

另外,在上传微信后取回本地的过程中,如果使用

WebClient mywebclient = new WebClient();

mywebclient.DownloadFile(requestUrl, filePath);

有时候取回的文件大小只有1K,这时候就是操作系统本身,画图程序一类的也根本无法打开,也就是说文件是有问题的。

不知道有没有人遇到过。如果有的话,请告诉我解决办法。成分感激。

所以取回文件暂时用了以下代码,不过还不知道会不会出现下载文件只有1K的情况

复制代码
 1                 Stream str = mywebclient.OpenRead(requestUrl);
 2                 StreamReader reader = new StreamReader(str);
 3                 byte[] mbyte = new byte[10000000]; //9.53M
 4                 int allmybyte = (int)mbyte.Length;
 5                 int startmbyte = 0;
 6 
 7                 while (allmybyte > 0)
 8                 {
 9 
10                     int m = str.Read(mbyte, startmbyte, allmybyte);
11                     if (m == 0)
12                         break;
13 
14                     startmbyte += m;
15                     allmybyte -= m;
16                 }
17 
18                 reader.Dispose();
19                 str.Dispose();
20 
21                 FileStream fstr = new FileStream(filePath, FileMode.OpenOrCreate, FileAccess.Write);
22                 fstr.Write(mbyte, 0, startmbyte);
23                 fstr.Flush();
24                 fstr.Close();
复制代码

 

posted on   落忆无痕  阅读(544)  评论(0编辑  收藏  举报

编辑推荐:
· 软件产品开发中常见的10个问题及处理方法
· .NET 原生驾驭 AI 新基建实战系列:向量数据库的应用与畅想
· 从问题排查到源码分析:ActiveMQ消费端频繁日志刷屏的秘密
· 一次Java后端服务间歇性响应慢的问题排查记录
· dotnet 源代码生成器分析器入门
阅读排行:
· 软件产品开发中常见的10个问题及处理方法
· 互联网不景气了那就玩玩嵌入式吧,用纯.NET开发并制作一个智能桌面机器人(四):结合BotSharp
· Vite CVE-2025-30208 安全漏洞
· MQ 如何保证数据一致性?
· 《HelloGitHub》第 108 期

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5
点击右上角即可分享
微信分享提示