【要什么自行车】ASP.NET MVC4笔记02:上传文件 uploadify 组件使用

 

参考:http://www.cnblogs.com/luotaoyeah/p/3321070.html

1、下载 uploadify 组件,copy至 Content文件夹

<link href="~/Content/uploadify/uploadify.css" rel="stylesheet" />
<script src="~/Content/uploadify/jquery.uploadify.js"></script>

 

2、View

<script type="text/javascript">
$(function () {
    $(#btn_upload).uploadify({
        uploader: /home/upload,            // 服务器处理地址
        swf: /Content/uploadify/uploadify.swf,
        buttonText: "上传文件",                  //按钮文字
        height: 34,                             //按钮高度
        width: 82,                              //按钮宽度
        fileTypeExts: "*.jpg;*.png;",           //允许的文件类型
        fileTypeDesc: "请选择图片文件",           //文件说明
        formData: { "imgType": "normal" }, //提交给服务器端的参数
        onUploadSuccess: function (file, data, response) {   //一个文件上传成功后的响应事件处理
            var data = $.parseJSON(data);
            $("#photo").attr("src",data.imgpath);
            //alert(data.imgpath);
        }
    });
});

</script>

<span id="btn_upload"></span>
<br />
<img id="photo" src="http://www.yxweb.com.cn/images/upphoto.gif" alt="请上传工作照" />

 

3、Controller

       public ActionResult Upload(HttpPostedFileBase Filedata)
        {
            // 没有文件上传,直接返回
            if (Filedata == null || string.IsNullOrEmpty(Filedata.FileName) || Filedata.ContentLength == 0)
            {
                return HttpNotFound();
            }

            //获取文件完整文件名(包含绝对路径)
            //文件存放路径格式:/files/upload/{日期}/{md5}.{后缀名}
            //例如:/files/upload/20130913/43CA215D947F8C1F1DDFCED383C4D706.jpg
            string fileMD5 = GetStreamMD5(Filedata.InputStream);
            string FileEextension = Path.GetExtension(Filedata.FileName);
            string uploadDate = DateTime.Now.ToString("yyyyMMdd");
    
            string imgType = Request["imgType"];
            string virtualPath = "/";
            if (imgType == "normal")
            {
                virtualPath = string.Format("~/files/upload/{0}/{1}{2}", uploadDate, fileMD5, FileEextension);
            }
            else
            {
                virtualPath = string.Format("~/files/upload2/{0}/{1}{2}", uploadDate, fileMD5, FileEextension);
            }
            string fullFileName = this.Server.MapPath(virtualPath);

            //创建文件夹,保存文件
            string path = Path.GetDirectoryName(fullFileName);
            Directory.CreateDirectory(path);
            if (!System.IO.File.Exists(fullFileName))
            {
                Filedata.SaveAs(fullFileName);
            }

            var data = new { imgtype = imgType, imgpath = virtualPath.Remove(0, 1) };
            return Json(data, JsonRequestBehavior.AllowGet);
            }



        /// <summary>
        /// 计算文件流的md5值
        /// </summary>
        /// <param name="stream">文件输入流</param>
        /// <returns></returns>
        public static String GetStreamMD5(Stream stream)
        {
            MD5 md5Hasher = new MD5CryptoServiceProvider();
            /*计算指定Stream对象的哈希值*/
            byte[] arrbytHashValue = md5Hasher.ComputeHash(stream);
            /*由以连字符分隔的十六进制对构成的String,其中每一对表示value中对应的元素;例如“F-2C-4A”*/
            string strHashData = System.BitConverter.ToString(arrbytHashValue).Replace("-", "");
            return strHashData;
        }

 

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。