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 };
千万不要使用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();