关闭

ASP.NET MVC使用Uploadify上传文件

标签: UploadifyVS2010ASP.NET MVC
3486人阅读 评论(1) 收藏 举报
分类:

说明: 

本人使用的IDE为VS2010,使用的为ASP.NET MVC 3(但同样适应于ASP.NET MVC4) 

Uploadify的官网为:http://www.uploadify.com/ 

本文使用的查件版本为最新版:3.2.1


正文开始: 

  • 1、下载文件,添加文件

下载插件,剔除掉PHP文件,将其他文件添加到项目中,如下图若是



  • 2、添加引用文件
在项目中引用JQuery文件、jquery.uploadify.js文件、uploadify.css文件

【注意】JQuery文件在前。

  • 3、前台JS文件
前台的JS文件

//初始化方法
$(function () {
       //空间上传的方法
    $("#uploadify").uploadify({
        'auto': false,
        'fileTypeDesc': '图片和PDF文件',
        'buttonText': '选择文件',
        'fileSizeLimit': 0,
        'width': 200,
        'multi': false, 
        'queueID': 'some_file_queue',
        'fileTypeExts': '*.gif; *.jpg; *.png; *.pdf',
        'swf': $("#PreURL").val() + 'Scripts/UploadifyFolder/uploadify.swf',
        'uploader': $("#PreURL").val() + 'DrugInfoAndNotice/Notice/UploadFile',
        'cancelImg': $("#PreURL").val() + 'Scripts/UploadifyFolder/uploadify-cancel.png',
        'onUploadError': function (file, errorCode, errorMsg, errorString) {
            alert('The file ' + file.name + ' could not be uploaded: ' + errorString);
        },
        'formData': { 'noticeID': '0' },
        'onUploadStart': function (file) {
            $("#uploadify").uploadify('settings', 'formData', { 'noticeID': currentNoticeID });
        },
        'onUploadSuccess': function (file, data, response) {
            var result = $.parseJSON(data);
            if (result.success == "true") {
                $("#successFile").append("<p> 文件:" + file.name + "  上传成功!" + "</p>");
                $("#noticeAttachmentList").append("<p>附件:"+file.name+" 上传成功! </p>");
            } else {
                $("<div></div>").html("文件" + file.name + "未上传成功!异常信息:" + result.message).dialog({ autoOpen: false, title: "提示" }).dialog("open");
            }
        }
    });

    //上传方法
    $("#uploadFile").button().click(
        function () {
            $("#uploadify").uploadify("upload", "*");
        }
    );
});

  • 4、Controller文件
        //文件上传方法
        [AcceptVerbs(HttpVerbs.Post)]
        public string UploadFile(HttpPostedFileBase Filedata,string noticeID)
        {
            var returnstr = new { success = "false", message = ""};
            //第一步创建路径
            if (Filedata != null)
            {
                try
                {
                    //创建连接(此处是我连接项目的文档服务器),凡涉及到File及Dictionary的均是如此,可以略过。
                    int connectionCode = NetworkConnection.Connect(@"\\10.10.10.10\drug$", "Q:", "用户名", "密码");
<span style="white-space:pre">		</span>    
                    if (connectionCode == (int)ERROR_ID.ERROR_SUCCESS)
                    {
                        string path = @"Q:\manuals";
                        //生成路径  路径生成规则:按月生成文件夹,每月的文件放在每个文件中
                        string floder = DateTime.Now.ToString("yyyyMM");

                        string floderPath = Path.Combine(path, floder); //生成路径,如:Q:\manuals\201511
                        //检查路径是否存在,不存在则创建
                        if (!Directory.Exists(floderPath))
                        {
                            try
                            {
                                Directory.CreateDirectory(floderPath);
                            }
                            catch (System.Exception ex)
                            {
                                returnstr = new { success = "false", message = "调用IO生成路径时发生异常,异常信息如下:" + ex.Message };
                                return new JavaScriptSerializer().Serialize(returnstr);
                            }
                        }


                        //判断文件是否存在,若存在,则返回提示内容
                        string fullpath = Path.Combine(floderPath, Path.GetFileName(Filedata.FileName));

                        if (System.IO.File.Exists(fullpath))
                        {
                            returnstr = new { success = "false", message = "服务器中已经存在该文件,请修改上传文件名称!"};
                            return new JavaScriptSerializer().Serialize(returnstr);
                        }


                        //将文件“拷贝”到指定路径
                        try
                        {
                            Filedata.SaveAs(fullpath);

                        }
                        catch (System.Exception e)
                        {
                            //删掉已经上传的文件
                            System.IO.File.Delete(fullpath);

                            returnstr = new { success = "false", message = "连接文档服务器OK!调用SaveAs方法过程中发生异常,异常信息如下:" + e.Message };
                            return new JavaScriptSerializer().Serialize(returnstr);
                        }

                        returnstr = new { success = "true", message = "文档上传成功!" };
                        return new JavaScriptSerializer().Serialize(returnstr);
                    }
                    else
                    {
                        returnstr = new { success = "false", message = "未能连接服务器!异常信息如下:请搜索WNetAddConnection2A,其返回结果为:" + connectionCode };
                        return new JavaScriptSerializer().Serialize(returnstr);
                    }

                }
                catch (System.Exception ex)
                {
                    returnstr = new { success = "false", message = "上传文件过程中发生异常,异常详情如下:" + ex.Message };
                    return new JavaScriptSerializer().Serialize(returnstr);
                }
            }
            else
            {
                return new JavaScriptSerializer().Serialize(returnstr);
            }

        }
  • 5、插件的使用方法文档
具体的各个参数可以参考插件的说明文档:http://www.uploadify.com/documentation/
  • 6、思考
对于插件的认识。

在Controller中传入的参数为:HttpPostedFileBase Filedata,其实Controller中的方法可以没有参数。

插件通过http协议,将需要上传的文件打成二进制流文件,然后通过request将文件传至应用服务器上。因此,应用服务器上的Controller方法可以通过Request获取文件。

Controller过程这样写:

[HttpPost]  
public string uploadFile(){  
            //获取当前的HttpContext
            HttpContextBase contextbase = new HttpContextWrapper(System.Web.HttpContext.Current);
            //获取当前的请求Request
            HttpRequestBase requestBase= contextbase.Request;
            //获取Request中的请求文件Collection
            //通过这个集合就可完成,多个文件的上传。本人Controller中参数为HttpPostedFileBase,则决定了使用单文件上传更好。
            //多文件上传的可通过插件的multi选项设定,其默认为true
            HttpFileCollectionBase myFileDateCollection = requestBase.Files;
            //获取集合中的指定名称的文件
            HttpPostedFileBase myFileDate = myFileDateCollection["Filedata"];  //注意,"Filedata"是插件指定的,可通过fileObjName选项进行修改
			...//相应的处理方法
}


6.2 另外,也可以使用HttpContext替换上面的HttpContextBase。

但为什么没用呢?

主要原因是HttpContext是老版本的(.NET3.5之前),抽象类,一般无法Mock(其实还是可以Mock的。例如Typemock使用Profiler的方式进行直接注入,可以Mock任何成员。不过,如果Moq等框架无法满足您的需要,一般便是您的设计有些问题了)。



HttpContext与HttpContextBase,几乎一模一样,具体可参见MSDN文档

0
0
查看评论
发表评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场

C# MVC4环境下Uploadify 3.2.1上传文件

1.新建一个空的MVC4项目 2.添加一个Home控制器,并在Home控制器下添加一个Index视图 3.下载Flash版的uploadify,链接:Uploadify...
  • TKDwave520
  • TKDwave520
  • 2015-04-25 23:59
  • 2247

Asp.Net Mvc 使用WebUploader 多图片上传

http://www.itnose.net/detail/6178274.html    最近由于项目需要上传多张图片,对于我这只菜鸟来说,以前上传图片都是直接拖得控件啊,而且还是一次只...
  • zunguitiancheng
  • zunguitiancheng
  • 2016-07-26 23:33
  • 2163

asp.net mvc 利用uploadify实现批量上传

  • 2011-12-21 14:27
  • 1.45MB
  • 下载

Asp .net MVC uploadify图片无刷新上传

  • 2015-01-02 20:40
  • 6.01MB
  • 下载

asp.net mvc uploadify v3.2.1 使用方法(二)

  • 2017-05-31 16:51
  • 7.67MB
  • 下载

探索Asp.net mvc 的文件上传(由浅入深)

原文链接 代码下载:http://files.cnblogs.com/n-pei/mvcfileupload.zip 最近因为TeamVideo需要用到视频和图片上传功能,所以试着Google了...
  • chaoyangzhixue
  • chaoyangzhixue
  • 2016-02-17 19:14
  • 1335

jQuery上传插件Uploadify 3.2在.NET下的详细例子

项目中要使用Uploadify 3.2来实现图片上传并生成缩略通的功能,特此记下来,以供各位参考! Uploadify下载地址:http://www.uploadify.com/download/ ...
  • wangqiuyun
  • wangqiuyun
  • 2013-06-28 15:19
  • 29756

结合项目(Spring+(基于注解的)SpringMVC和Mybatis+uploadify文件上传)--poi解析Excel文件

1.上传文件至服务器 2.解析Excel文件并返回数据集合 3.将数据保存到服务器 框架======Spring+(基于注解的)SpringMVC和Mybatis===== 第一步: 前台: jsp...
  • wu920604
  • wu920604
  • 2016-07-12 18:18
  • 1214

JQuery Uploadify v3.2.1 上传图片并预览(基于spring mvc框架开发)

Controller后台处理: package com.news.controller; import java.io.File; import java.io.FileInputStream; i...
  • chuan9966
  • chuan9966
  • 2015-04-05 09:59
  • 1703

asp.net mvc 利用uploadify实现批量上传

  • 2011-12-21 14:27
  • 1.45MB
  • 下载
    个人资料
    • 访问:86822次
    • 积分:1678
    • 等级:
    • 排名:千里之外
    • 原创:83篇
    • 转载:3篇
    • 译文:0篇
    • 评论:11条
    关于我
    来自山东,坐标北京
    毕业于北京交通大学电子与通信工程专业
    目前从事医疗行业相关软件开发工作
    目标是成为一名优秀的开发者
    文章分类
    最新评论