本文转自:http://blog.csdn.net/feter1992/article/details/77877659

前端: 微信开发者工具

后端:.Net

服务器:阿里云

这里介绍微信小程序如何实现上传图片到自己的服务器上

前端代码

  1. data: {
  2. productInfo: {}
  3. },
  4. //添加Banner
  5. bindChooiceProduct: function () {
  6. var that = this;
  7. wx.chooseImage({
  8. count: 3,  //最多可以选择的图片总数
  9. sizeType: ['compressed'], // 可以指定是原图还是压缩图,默认二者都有
  10. sourceType: ['album', 'camera'], // 可以指定来源是相册还是相机,默认二者都有
  11. success: function (res) {
  12. // 返回选定照片的本地文件路径列表,tempFilePath可以作为img标签的src属性显示图片
  13. var tempFilePaths = res.tempFilePaths;
  14. //启动上传等待中...
  15. wx.showToast({
  16. title: '正在上传...',
  17. icon: 'loading',
  18. mask: true,
  19. duration: 10000
  20. })
  21. var uploadImgCount = 0;
  22. for (var i = 0, h = tempFilePaths.length; i < h; i++) {
  23. wx.uploadFile({
  24. url: util.getClientSetting().domainName + '/home/uploadfilenew',
  25. filePath: tempFilePaths[i],
  26. name: 'uploadfile_ant',
  27. formData: {
  28. 'imgIndex': i
  29. },
  30. header: {
  31. "Content-Type": "multipart/form-data"
  32. },
  33. success: function (res) {
  34. uploadImgCount++;
  35. var data = JSON.parse(res.data);
  36. //服务器返回格式: { "Catalog": "testFolder", "FileName": "1.jpg", "Url": "https://test.com/1.jpg" }
  37. var productInfo = that.data.productInfo;
  38. if (productInfo.bannerInfo == null) {
  39. productInfo.bannerInfo = [];
  40. }
  41. productInfo.bannerInfo.push({
  42. "catalog": data.Catalog,
  43. "fileName": data.FileName,
  44. "url": data.Url
  45. });
  46. that.setData({
  47. productInfo: productInfo
  48. });
  49. //如果是最后一张,则隐藏等待中
  50. if (uploadImgCount == tempFilePaths.length) {
  51. wx.hideToast();
  52. }
  53. },
  54. fail: function (res) {
  55. wx.hideToast();
  56. wx.showModal({
  57. title: '错误提示',
  58. content: '上传图片失败',
  59. showCancel: false,
  60. success: function (res) { }
  61. })
  62. }
  63. });
  64. }
  65. }
  66. });
  67. }
data: {
productInfo: {}
},
//添加Banner
bindChooiceProduct: function () {
var that = this; wx.chooseImage({
count: 3, //最多可以选择的图片总数
sizeType: ['compressed'], // 可以指定是原图还是压缩图,默认二者都有
sourceType: ['album', 'camera'], // 可以指定来源是相册还是相机,默认二者都有
success: function (res) {
// 返回选定照片的本地文件路径列表,tempFilePath可以作为img标签的src属性显示图片
var tempFilePaths = res.tempFilePaths;
//启动上传等待中...
wx.showToast({
title: '正在上传...',
icon: 'loading',
mask: true,
duration: 10000
})
var uploadImgCount = 0;
for (var i = 0, h = tempFilePaths.length; i < h; i++) {
wx.uploadFile({
url: util.getClientSetting().domainName + '/home/uploadfilenew',
filePath: tempFilePaths[i],
name: 'uploadfile_ant',
formData: {
'imgIndex': i
},
header: {
"Content-Type": "multipart/form-data"
},
success: function (res) {
uploadImgCount++;
var data = JSON.parse(res.data);
//服务器返回格式: { "Catalog": "testFolder", "FileName": "1.jpg", "Url": "https://test.com/1.jpg" }
var productInfo = that.data.productInfo;
if (productInfo.bannerInfo == null) {
productInfo.bannerInfo = [];
}
productInfo.bannerInfo.push({
"catalog": data.Catalog,
"fileName": data.FileName,
"url": data.Url
});
that.setData({
productInfo: productInfo
}); //如果是最后一张,则隐藏等待中
if (uploadImgCount == tempFilePaths.length) {
wx.hideToast();
}
},
fail: function (res) {
wx.hideToast();
wx.showModal({
title: '错误提示',
content: '上传图片失败',
showCancel: false,
success: function (res) { }
})
}
});
}
}
});
}

后端上传代码(将文件上传到服务器临时文件夹内)

  1. [HttpPost]
  2. public ContentResult UploadFileNew()
  3. {
  4. UploadFileDTO model = new UploadFileDTO();
  5. HttpPostedFileBase file = Request.Files["uploadfile_ant"];
  6. if (file != null)
  7. {
  8. //公司编号+上传日期文件主目录
  9. model.Catalog = DateTime.Now.ToString("yyyyMMdd");
  10. model.ImgIndex = Convert.ToInt32(Request.Form["imgIndex"]);
  11. //获取文件后缀
  12. string extensionName = System.IO.Path.GetExtension(file.FileName);
  13. //文件名
  14. model.FileName = System.Guid.NewGuid().ToString("N") + extensionName;
  15. //保存文件路径
  16. string filePathName = System.IO.Path.Combine(CommonHelper.GetConfigValue("ImageAbsoluteFolderTemp"), model.Catalog);
  17. if (!System.IO.Directory.Exists(filePathName))
  18. {
  19. System.IO.Directory.CreateDirectory(filePathName);
  20. }
  21. //相对路径
  22. string relativeUrl = CommonHelper.GetConfigValue("ImageRelativeFolderTemp");
  23. file.SaveAs(System.IO.Path.Combine(filePathName, model.FileName));
  24. //获取临时文件相对完整路径
  25. model.Url = System.IO.Path.Combine(relativeUrl, model.Catalog, model.FileName).Replace("\\", "/");
  26. }
  27. return Content(Newtonsoft.Json.JsonConvert.SerializeObject(model));
  28. }
[HttpPost]
public ContentResult UploadFileNew()
{
UploadFileDTO model = new UploadFileDTO();
HttpPostedFileBase file = Request.Files["uploadfile_ant"];
if (file != null)
{
//公司编号+上传日期文件主目录
model.Catalog = DateTime.Now.ToString("yyyyMMdd");
model.ImgIndex = Convert.ToInt32(Request.Form["imgIndex"]); //获取文件后缀
string extensionName = System.IO.Path.GetExtension(file.FileName); //文件名
model.FileName = System.Guid.NewGuid().ToString("N") + extensionName; //保存文件路径
string filePathName = System.IO.Path.Combine(CommonHelper.GetConfigValue("ImageAbsoluteFolderTemp"), model.Catalog);
if (!System.IO.Directory.Exists(filePathName))
{
System.IO.Directory.CreateDirectory(filePathName);
}
//相对路径
string relativeUrl = CommonHelper.GetConfigValue("ImageRelativeFolderTemp");
file.SaveAs(System.IO.Path.Combine(filePathName, model.FileName)); //获取临时文件相对完整路径
model.Url = System.IO.Path.Combine(relativeUrl, model.Catalog, model.FileName).Replace("\\", "/");
}
return Content(Newtonsoft.Json.JsonConvert.SerializeObject(model));
}
  1. /// <summary>
  2. /// 上传文件 返回数据模型
  3. /// </summary>
  4. public class UploadFileDTO
  5. {
  6. /// <summary>
  7. /// 目录名称
  8. /// </summary>
  9. public string Catalog { set; get; }
  10. /// <summary>
  11. /// 文件名称,包括扩展名
  12. /// </summary>
  13. public string FileName { set; get; }
  14. /// <summary>
  15. /// 浏览路径
  16. /// </summary>
  17. public string Url { set; get; }
  18. /// <summary>
  19. /// 上传的图片编号(提供给前端判断图片是否全部上传完)
  20. /// </summary>
  21. public int ImgIndex { get; set; }
  22. }
/// <summary>
/// 上传文件 返回数据模型
/// </summary>
public class UploadFileDTO
{
    /// <summary>
    /// 目录名称
    /// </summary>
    public string Catalog { set; get; }
    /// <summary>
    /// 文件名称,包括扩展名
    /// </summary>
    public string FileName { set; get; }
    /// <summary>
    /// 浏览路径
    /// </summary>
    public string Url { set; get; }
    /// <summary>
    /// 上传的图片编号(提供给前端判断图片是否全部上传完)
    /// </summary>
    public int ImgIndex { get; set; }
}
  1. #region 获取配置文件Key对应Value值
  2. /// <summary>
  3. /// 获取配置文件Key对应Value值
  4. /// </summary>
  5. /// <param name="key"></param>
  6. /// <returns></returns>
  7. public static string GetConfigValue(string key)
  8. {
  9. return ConfigurationManager.AppSettings[key].ToString();
  10. }
  11. #endregion
#region 获取配置文件Key对应Value值
/// <summary>
/// 获取配置文件Key对应Value值
/// </summary>
/// <param name="key"></param>
/// <returns></returns>
public static string GetConfigValue(string key)
{
return ConfigurationManager.AppSettings[key].ToString();
}
#endregion

设置配置文件上传文件对应的文件夹信息

  1. <appSettings>
  2. <!--图片临时文件夹 绝对路径-->
  3. <add key="ImageAbsoluteFolderTemp" value="D:\Images\temp" />
  4. <!--图片正式文件夹 绝对路径-->
  5. <add key="ImageAbsoluteFolderFinal" value="D:\Images\product" />
  6. <!--图片临时文件夹 相对路径-->
  7. <add key="ImageRelativeFolderTemp" value="http://192.168.1.79:9009/temp"/>
  8. <!--图片正式文件夹 相对路径-->
  9. <add key="ImageRelativeFolderFinal" value="http://192.168.1.79:9009/product"/>
  10. </appSettings>
<appSettings>
<!--图片临时文件夹 绝对路径-->
<add key="ImageAbsoluteFolderTemp" value="D:\Images\temp" />
<!--图片正式文件夹 绝对路径-->
<add key="ImageAbsoluteFolderFinal" value="D:\Images\product" /> <!--图片临时文件夹 相对路径-->
<add key="ImageRelativeFolderTemp" value="http://192.168.1.79:9009/temp"/>
<!--图片正式文件夹 相对路径-->
<add key="ImageRelativeFolderFinal" value="http://192.168.1.79:9009/product"/>
</appSettings>

PS:上传到服务器的临时文件夹内,当用户点击保存才把这些文件移动到正式目录下

欢迎加入我的微信小程序技术交流群

[转]微信小程序实现图片上传功能的更多相关文章

  1. 微信小程序实现图片上传功能

    前端: 微信开发者工具 后端:.Net 服务器:阿里云 这里介绍微信小程序如何实现上传图片到自己的服务器上 前端代码 data: { productInfo: {} }, //添加Banner bin ...

  2. nodeJs实现微信小程序的图片上传

    今天我来介绍一下nodejs如何实现保存微信小程序传过来的图片及其返回 首先wx.uploadFile绝大部分时候是配合wx.chooseImage一起出现的,毕竟选择好了图片,再统一上传是实现用户图 ...

  3. 微信小程序--实现图片上传

    前端: 微信开发者工具 后端:.Net 服务器:阿里云 这里介绍微信小程序如何实现上传图片到自己的服务器上 前端代码 data: { productInfo: {} }, //添加Banner bin ...

  4. 微信小程序中图片上传阿里云Oss

    本人今年6月份毕业,最近刚在上海一家小公司实习,做微信小程序开发.最近工作遇到一个小问题. 微信小程序图片上传阿里云服务器Oss也折腾了蛮久才解决的,所以特意去记录一下. 第一步:配置阿里云地址: 我 ...

  5. 微信小程序实现图片上传,预览,删除

    wxml: <view class='imgBox'> <image class='imgList' wx:for="{{imgs}}" wx:for-item= ...

  6. 微信小程序 实现图片上传并展示到前端(多文件)并实现表单提交验证

    链接: https://blog.csdn.net/guanj0623/article/details/121595884?spm=1001.2014.3001.5501 https://blog.c ...

  7. 小程序实现图片上传,预览以及图片base64位处理

    最近一段时间在做小程序项目,第一期功也完工了.需要好好总结一下经验,把项目中遇到的问题好好总结一下,遇到的问题,踩过的坑.今天写一个小程序实现图片上传,预览,以及删除,图片base64位处理.下面就是 ...

  8. 微信小程序多张图片上传

    微信小程序上传图片每次只能上传一张,所有很多朋友就会问想要多张图片上传怎么办? 首先,我们来看一看wx.chooseImage(object)和wx.uploadFile(OBJECT)这两个个api ...

  9. 「小程序JAVA实战」小程序头像图片上传(上)(43)

    转自:https://idig8.com/2018/09/08/xiaochengxujavashizhanxiaochengxutouxiangtupianshangchuan40/ 在微信小程序中 ...

随机推荐

  1. python3字典:获取json响应值来进行断言

    前言:在接口自动化测试中,最后都是需要将返回结果进行断言.本文按照实际情况举例说明字典各种操作,以及如何提取响应数据来进行断言 1.dict = {'code': '200', 'message': ...

  2. SSM-SpringMVC-31:SpringMVC中利用hibernate-validator做后台校验

    ------------吾亦无他,唯手熟尔,谦卑若愚,好学若饥------------- 校验有三种:前台页面校验(例如js和h5),后台校验,数据库校验 但是一般能不用数据库校验就不用数据库校验,因 ...

  3. 远程文件同步详解(Remote File Sync)

    1. 远程文件同步的常见方式: 1.cron + rsync 优点: 简单 缺点:定时执行,实时性比较差:另外,rsync同步数据时,需要扫描所有文件后进行比对,进行差量传输.如果文件数量达到了百万甚 ...

  4. postman的安装与使用(模拟请求)

    最近需要测试产品中的REST API,无意中发现了PostMan这个chrome插件,把玩了一下,发现postman秉承了一贯以来google工具强大,易用的特质.独乐乐不如众乐乐,特此共享出来给大伙 ...

  5. Java RESTful 框架的性能比较

    来源:鸟窝, colobu.com/2015/11/17/Jax-RS-Performance-Comparison/ 如有好文章投稿,请点击 → 这里了解详情 在微服务流行的今天,我们会从纵向和横向 ...

  6. fasthttp中的协程池实现

    fasthttp中的协程池实现 协程池可以控制并行度,复用协程.fasthttp 比 net/http 效率高很多倍的重要原因,就是利用了协程池.实现并不复杂,我们可以参考他的设计,写出高性能的应用. ...

  7. bzoj4067 [Ctsc2015]gender

    好神的一道题啊! 我们发现题目中的ln的贡献非常傻逼,但是我们可以发现这个东西的取值只有40个左右,于是我们可以枚举他! 枚举完了对于题里的贡献就是一个普通的最小割,采用的是文理分科的思想,与S连代表 ...

  8. BZOJ_1058_[ZJOI2007]报表统计_STL

    BZOJ_1058_[ZJOI2007]报表统计_STL Description 小Q的妈妈是一个出纳,经常需要做一些统计报表的工作.今天是妈妈的生日,小Q希望可以帮妈妈分担一些工 作,作为她的生日礼 ...

  9. 【转】干货,Kubernetes中的Source Ip机制。

    准备工作 你必须拥有一个正常工作的 Kubernetes 1.5 集群,用来运行本文中的示例.该示例使用一个简单的 nginx webserver 回送它接收到的请求的 HTTP 头中的源 IP 地址 ...

  10. Failed to fetch URL http://dl-ssl.google.com/android/repository/addons_list-2.xml, reason:

    http://blog.csdn.net/gyming/article/details/8168166/ 最近接受的这个项目需要Android SDK Tools revision 22.6.2 or ...