c#后端:

        /// <summary>
/// 上传图片
/// </summary>
/// <returns></returns>
[HttpPost]
public ResultData uploadImage()
{
ResultData result = new ResultData();
try
{
string path = "/tmp/";
HttpPostedFile file = System.Web.HttpContext.Current.Request.Files["content"]; //对应小程序 name
string parameters = string.Format("postData:{0}", file.ToString()); //获取文件
if (file != null)
{
Stream sr = file.InputStream; //文件流
Bitmap bitmap = (Bitmap)Bitmap.FromStream(sr);
path += file.FileName;
string currentpath = System.Web.HttpContext.Current.Server.MapPath("~"); bitmap.Save(currentpath + path);
}
result.status = ;
result.data = path;
}
catch (Exception vErr)
{
result.status = -;
result.detail = vErr.Message;
return result;
}
return result;
}
    public class ResultData
{ public int status { get; set; } public string data { get; set; } public string detail { get; set; } }

小程序前端:

upFiles.js

var chooseImage = (t, count) =>{
wx.chooseImage({
count: count,
sizeType: ['original', 'compressed'],
sourceType: ['album', 'camera'],
success: (res) => {
var imgArr = t.data.upImgArr || [];
let arr = res.tempFiles;
// console.log(res)
arr.map(function(v,i){
v['progress'] = ;
imgArr.push(v)
})
t.setData({
upImgArr: imgArr
}) let upFilesArr = getPathArr(t);
if (upFilesArr.length > count-) {
let imgArr = t.data.upImgArr;
let newimgArr = imgArr.slice(, count)
t.setData({
upFilesBtn: false,
upImgArr: newimgArr
})
}
},
});
}
var chooseVideo = (t,count) => {
wx.chooseVideo({
sourceType: ['album', 'camera'],
maxDuration: ,
compressed:true,
camera: 'back',
success: function (res) {
let videoArr = t.data.upVideoArr || [];
let videoInfo = {};
videoInfo['tempFilePath'] = res.tempFilePath;
videoInfo['size'] = res.size;
videoInfo['height'] = res.height;
videoInfo['width'] = res.width;
videoInfo['thumbTempFilePath'] = res.thumbTempFilePath;
videoInfo['progress'] = ;
videoArr.push(videoInfo)
t.setData({
upVideoArr: videoArr
})
let upFilesArr = getPathArr(t);
if (upFilesArr.length > count - ) {
t.setData({
upFilesBtn: false,
})
}
// console.log(res)
}
})
} // 获取 图片数组 和 视频数组 以及合并数组
var getPathArr = t => {
let imgarr = t.data.upImgArr || [];
let upVideoArr = t.data.upVideoArr || [];
let imgPathArr = [];
let videoPathArr = [];
imgarr.map(function (v, i) {
imgPathArr.push(v.path)
})
upVideoArr.map(function (v, i) {
videoPathArr.push(v.tempFilePath)
})
let filesPathsArr = imgPathArr.concat(videoPathArr);
return filesPathsArr;
} /**
* upFilesFun(this,object)
* object:{
* url ************ 上传路径 (必传)
* filesPathsArr ****** 文件路径数组
* name ****** wx.uploadFile name
* formData ****** 其他上传的参数
* startIndex ****** 开始上传位置 0
* successNumber ****** 成功个数
* failNumber ****** 失败个数
* completeNumber ****** 完成个数
* }
* progress:上传进度
* success:上传完成之后
*/ var upFilesFun = (t, data, progress, success) =>{
let _this = t;
let url = data.url;
let filesPath = data.filesPathsArr ? data.filesPathsArr : getPathArr(t);
let name = data.name || 'file';
let formData = data.formData || {};
let startIndex = data.startIndex ? data.startIndex : ;
let successNumber = data.successNumber ? data.successNumber : ;
let failNumber = data.failNumber ? data.failNumber : ;
if (filesPath.length == ) {
success([]);
return;
}
const uploadTask = wx.uploadFile({
url: url,
filePath: filesPath[startIndex],
name: name,
formData: formData,
success: function (res) {
var data = res.data
successNumber++;
// console.log('success', successNumber)
// console.log('success',res)
// 把后台返回的地址链接存到一个数组
let uploaded = t.data.uploadedPathArr || [];
var da = JSON.parse(res.data);
// console.log(da)
if (da.code == ) {
// ### 此处可能需要修改 以获取图片路径
uploaded.push(da.data) t.setData({
uploadedPathArr: uploaded
})
}
},
fail: function(res){
failNumber++;
// console.log('fail', filesPath[startIndex])
// console.log('failstartIndex',startIndex)
// console.log('fail', failNumber)
// console.log('fail', res)
},
complete: function(res){ if (startIndex == filesPath.length - ){
// console.log('completeNumber', startIndex)
// console.log('over',res)
let sucPathArr = t.data.uploadedPathArr;
success(sucPathArr);
t.setData({
uploadedPathArr: []
})
console.log('成功:' + successNumber + " 失败:" + failNumber)
}else{
startIndex++;
// console.log(startIndex)
data.startIndex = startIndex;
data.successNumber = successNumber;
data.failNumber = failNumber;
upFilesFun(t, data, progress, success);
}
}
}) uploadTask.onProgressUpdate((res) => {
res['index'] = startIndex;
// console.log(typeof (progress));
if (typeof (progress) == 'function') {
progress(res);
}
// console.log('上传进度', res.progress)
// console.log('已经上传的数据长度', res.totalBytesSent)
// console.log('预期需要上传的数据总长度', res.totalBytesExpectedToSend)
}) }
module.exports = { chooseImage, chooseVideo, upFilesFun, getPathArr}

参考 https://www.cnblogs.com/flysem/p/9346759.html

最新文章

  1. Python任务调度模块 – APScheduler
  2. C#语言和数据库基础
  3. android 录音的断点续传
  4. 【iis错误码】IIS 服务 这些年遇到的错误码
  5. poj 3565 二分图最优匹配
  6. C# 设置 窗口最大化
  7. 【网络流#3】hdu 1532 - Dinic模板题
  8. jbpmAPI-8
  9. R语言笔记2--循环、R脚本
  10. 云计算学习(5-1)云平台产品介绍-华为的FusionCloud产品
  11. ServletRequest
  12. nginx系列4:日志管理
  13. UOJ Round #1 题解
  14. 制作Wi-Fi Ducky远程HID攻击设备
  15. SpringBoot中用Fastjson替换默认的Jackson
  16. [译]Quartz.NET 框架 教程(中文版)2.2.x 之第八课 调度监听器
  17. iOS升级swift3 遇到Overriding non-open instance method outside of its defining module的解决方案
  18. 【TCP协议】MTU和MSS详解
  19. win10 mysql57密码重置
  20. cop2000实现补码两位乘

热门文章

  1. 会话技术中的Cookie与session
  2. npm安装Vue.js
  3. Windows10设置系统参数
  4. C#设计模式学习笔记:(3)抽象工厂模式
  5. CentOS7配置ftp
  6. mysql行转列,函数GROUP_CONCAT(expr)
  7. object解构赋值
  8. C语言-&gt;关于文件数据的录入和输出调用的函数总结
  9. list=null和list.size=0的区别
  10. 树莓派查看ip地址(命令ifconfig)和退出ping