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

本文实例为大家分享了微信小程序实现图片上传功能的具体代码,供大家参考,具体内容如下

前端:微信开发者工具

后端:.Net

服务器:阿里云

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

前端代码

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) { }
      })
     }
    });
   }
  }
 });
} 

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

[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));
} 
/// <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; }
} 
#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

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

<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:上传到服务器的临时文件夹内,当用户点击保存才把这些文件移动到正式目录下。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • 微信小程序多张图片上传功能

    微信小程序上传图片每次只能上传一张,所有很多朋友就会问想要多张图片上传怎么办? 首先,我们来看一看wx.chooseImage(object)和wx.uploadFile(OBJECT)这两个个api 示例代码是这样的: wx.chooseImage({ success: function(res) { var tempFilePaths = res.tempFilePaths wx.uploadFile({ url: 'http://example.weixin.qq.com/upload',

  • 微信小程序教程之本地图片上传(leancloud)实例详解

    微信小程序 leancloud --本地图片上传 由于本站最近学习微信小程序的知识,这里记录下微信小程序实现本地上传的功能实现方法,以下是网上找的资料,大家看下. 将本地图片上传至leancloud后台. 获取本地图片或者拍照,我在上一篇博文中写过.这里就不说了.我的博客 直接上代码: 1.index.js //index.js //获取应用实例 var app = getApp() const AV = require('../../utils/av-weapp.js'); Page({ da

  • 微信小程序开发之从相册获取图片 使用相机拍照 本地图片上传

    今天遇到微信小程序的用户头像设置功能,做笔记. 先上gif: 再上代码: 小demo,代码很简单. 1.index.wxml <!--index.wxml--> <button style="margin:30rpx;" bindtap="chooseimage">获取图片</button> <image src="{{tempFilePaths }}" mode="aspecFill"

  • 微信小程序实现图片上传

    本文实例为大家分享了Android九宫格图片展示的具体代码,供大家参考,具体内容如下/p> 图片上传服务器: wxml <view class="container"> <button bindtap='chooseImageTap'>上传图片</button> </view> wxss Page({ /** * 页面的初始数据 */ data: { imgs: [],//本地图片地址数组 picPaths:[],//网络路径 },

  • tp5实现微信小程序多图片上传到服务器功能

    最近在做一个教育类的小商城的微信小程序,用到了上传多个图片文件到服务器端,这里做一个讲解,希望对大家有所帮助. 1,小程序端: 在wxml文件中: <!--选择图片 --> <view class="picture"> <view class="img" wx:for="{{imgs}}" wx:for-item="item" wx:key="*this"> <im

  • 微信小程序实现图片上传功能实例(前端+PHP后端)

    前言 几乎每个程序都需要用到图片.下面就来给大家介绍前端+PHP后端实现微信小程序实现图片上传功能,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍吧. 方法如下: 一.wxml文件 <text>上传图片</text> <view> <button bindtap="uploadimg">点击选择上传图</button> </view> <image src='{{source}}' style=

  • 微信小程序开发(二)图片上传+服务端接收详解

    这次介绍下小程序当中常用的图片上传. 前几天做了图片上传功能,被坑了一下.接下来我们来看一下微信的上传api. 这里的filePath就是图片的存储路径,类型居然是个String,也就是 只能每次传一张图片,我以前的接口都是接收一个array,我本人又是一个半吊子的PHP,只能自己去改接收图片的接口. 看一下页面效果图 一个很常见的修改头像效果,选择图片(拍照),然后上传. 下面就是贴代码了 首先是小程序的wxml代码 <view class="xd-container">

  • 微信小程序实现图片上传、删除和预览功能的方法

    本文实例讲述了微信小程序实现图片上传.删除和预览功能的方法.分享给大家供大家参考,具体如下: 这里主要介绍一下微信小程序的图片上传图片删除和图片预览 布局 <view class="img-v"> <view class="img" wx:for="{{imgs}}" wx:for-item="item" wx:key="*this"> <image src="{{i

  • 微信小程序 图片上传实例详解

    一.了解wx.chooseImage(OBJECT) 二.代码编程 在pages文件里面创建uploadimg文件夹 1.编写页面结构:uploadimg.wxml <view class="container" style="padding:1rem;"> <button type="primary"bindtap="chooseimage">获取图片</button> <image

  • 微信小程序实现图片上传放大预览删除代码

    本文实例为大家分享了微信小程序图片上传放大预览的具体代码,供大家参考,具体内容如下 效果: image.js代码: Page({ //选择相册或拍照 data: { imgs: [] }, //上传图片 chooseImg: function (e) { var that = this; var imgs = this.data.imgs; if (imgs.length >= 9) { this.setData({ lenMore: 1 }); setTimeout(function () {

  • 微信小程序基于腾讯云对象存储的图片上传功能

    在使用腾讯云对象存储之前,公司一直使用的是传统的FTP的上传模式,而随着用户量的不断增加,FTP所暴露出来的问题也越来越多,1.传输效率低,上传速度慢.2.时常有上传其他文件来攻击服务器,安全上得不到保障.所以我们在经过慎重考虑觉得使用第三方的云存储服务. 在最开始的时候我们在腾讯云与阿里云中选择,最终我们选择腾讯云,腾讯云在文件上传用时方面的性能比较突出,文件越大表现越好:在下载用时方面表现略优于阿里云:文件删除用时方面总体速度略逊于,但在不同大小文件删除用时上都比较稳定.当然这与我们主要用于

随机推荐