欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

.NET中的FileUpload控件的使用-Jquery(一)

程序员文章站 2022-04-28 13:13:15
FileUpload在HTML中是个常用的基础控件,在涉及到上传各种格式的文件时候都会用到;笔者前段时间正好用到它做上传功能,记录下来做一些累积, 前端到后台用的是的Jquery中的Ajax进行数据传输,在后台的逻辑处理中以HttpPostedFileBase的对象调用SaveAs(ServerSa ......

fileupload在html中是个常用的基础控件,在涉及到上传各种格式的文件时候都会用到;笔者前段时间正好用到它做上传功能,记录下来做一些累积,

前端到后台用的是的jquery中的ajax进行数据传输,在后台的逻辑处理中以httppostedfilebase的对象调用saveas(serversavepath)方法去存储到指定路径。

microsoft在技术文档中是这样描述httppostedfilebase的

serves as the base class for classes that provide access to individual files that have been uploaded by a client.
用于提供客户端上传的单个文件访问的类的基类
 
接下来看看如何实现:
html
  <div class="container">
        <div class="row">
            <input type="file" id="files" multiple name="files" /><button class="btn-default" id="uploadbutton">点我上传</button>
        </div>
    </div>
js
 $(function () {
            $('#uploadbutton').click(function () {
              var data= new formdata();
                var fileupload = $("#files").get(0);
                files = fileupload.files;
                if (files.length > 0) {
                    for (var i = 0; i < files.length; i++) {
                        data.append(files[i].name, files[i]); //formdata 是以键值对的形式模拟表单,然后以xmlhttprequest请求出去。表单的enctype的属性为multipart/form-data 
                    }
                    $.ajax({
                        url: '/ienotes/commonfile,
                        type: "post", 
                        processdata: false,   //  不序列化,直接将data进行传输。
                        contenttype: false,    // 告诉jquery不要设置content-type请求头,设置成true会对formdata的边界造成干扰,接收不到数据。
                        data: data,
                        success: function (result) {
                            //location.href("index");
                            alert(result);
                        },
                        error: function (err) {
                            alert(err.statustext);
                        }
                    });
                }
            });
        });
 后台

public static bool commonfile(){

 var  files = request.files.allkeys.distinct(); //将传输过来的files进行去重
                if (files != null)
                {
                    foreach (string each in files)
                    {
                        httppostedfilebase file = request.files[each] as httppostedfilebase; //注意,这里有一个对象类型转换的过程,需要将传过来的对象转换成httppostedfilebase对象
                        if (file != null)
                        {
                            var inputfilename = path.getfilename(file.filename);
                            string str4 = appdomain.currentdomain.basedirectory;    //获取基目录,它由程序集冲突解决程序用来探测程序集。

                            var serversavepath = path.combine(server.mappath("~/uploads/") );
                            if (!directory.exists(serversavepath))//检查路径是否存在
                            {
                                directory.createdirectory(serversavepath);
                            }
                            var savepath = path.combine(serversavepath ,inputfilename);

                            file.saveas(savepath);
                        }

                    }
                    return true;
                }
                else
                {
                    return false;
                }

}