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


    前端: 微信开发者工具

    后端:.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	emp" />
    <!--图片正式文件夹 绝对路径-->
    <add key="ImageAbsoluteFolderFinal" value="D:Imagesproduct" />
    
    <!--图片临时文件夹 相对路径-->
    <add key="ImageRelativeFolderTemp" value="http://192.168.1.79:9009/temp"/>
    <!--图片正式文件夹 相对路径-->
    <add key="ImageRelativeFolderFinal" value="http://192.168.1.79:9009/product"/>
    </appSettings>

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

  • 相关阅读:
    VMware Workstation网卡不启动
    解决IE10以下对象不支持“bind”属性或方法
    二分法查找
    选择排序与冒泡排序
    方法内部开启线程的方法
    重写Collections实现自定义排序
    根据反射生成SQL语句
    vue插件安装备忘
    vue cli4.x 新建项目 过程提醒
    php setcooike()失败的原因之一,希望能帮到你
  • 原文地址:https://www.cnblogs.com/DoNetCShap/p/9890143.html
Copyright © 2020-2023  润新知