不使用ASP.NET中的服务器控件将如何上传文件?

遇到文件的上传时,可能会有大部分的开发者喜欢使用服务器控件,虽然很方便,但是却不能很好的控制,不具灵活性。

现给出例子,使用html标签语言灵活的控制文件的上传。

1、html部分

<input type="file" id="uploadFile" name="uploadFile" style="display: none;"/>
<a href="#" id="uploads">上传文件</a>
<input type="hidden" id="txtFile" name="txtFile" value=""/>
<div class="img"></div>

2、JS部分

<script type="text/javascript">
        $(document).ready(function () {
            //单击div触发文件的上传事件
            $(".img").click(function() {
                $("#uploadFile").click();
            });
            $("#uploads").click(function () {
                ajaxFileUpload();
            });
        });        
        function ajaxFileUpload() {
            $.ajaxFileUpload
            (          
                {
                    url: ‘/plus/upload.aspx‘, //用于文件上传的服务器端请求地址    
                    secureuri: false, //是否需要安全协议,一般设置为false
                    fileElementId: ‘uploadFile‘, //文件上传域的ID
                    dataType: ‘json‘, //返回值类型 一般设置为json
                    success: function(data, status) //服务器成功响应处理函数
                    {
                        $("#img1").attr("src", data.imgurl);
                        $("#txtFile").val(data.imgurl);
                        if (typeof (data.error) != ‘undefined‘) {
                            if (data.error != ‘‘) {
                                alert(data.error);
                            } else {
                                alert(data.msg);
                            }
                        }
                    },
                    error: function(data, status, e) //服务器响应失败处理函数
                    {
                        alert(e);
                    }
                }
            );
            return false;
        }
    </script>

3、uoload.aspx.cs代码部分

protected void Page_Load(object sender, EventArgs e)
{            
            HttpFileCollection files = Request.Files;
            string msg = string.Empty;
            string error = string.Empty;
            string imgurl = string.Empty;
            
            if (files.Count > 0)
            {
                string fileUrl = Server.MapPath("/") + "uploadfiles\\scholar\\temp\\";  //获取web服务器所在的物理路径
                //若文件夹不存在就创建
                if (!Directory.Exists(fileUrl))
                {
                    Directory.CreateDirectory(fileUrl);
                }
                string fileName = DateTime.Now.ToString("yyyyMMddHHmmssfff") + files[0].FileName.Substring(files[0].FileName.IndexOf(‘.‘));//修改文件名称
                files[0].SaveAs(fileUrl + fileName);    //将上传的文件保存到指定服务器的文件夹中
                msg = "上传成功! 文件大小为:" + ((float)files[0].ContentLength/(1024*1024)).ToString("0.00") + "MB";
                imgurl = "/uploadfiles/scholar/temp/" + fileName;
                string res = "{ error:‘" + error + "‘, msg:‘" + msg + "‘,imgurl:‘" + imgurl + "‘}";
                Response.Write(res);
                Response.End();
               
            }
}




不使用ASP.NET中的服务器控件将如何上传文件?,古老的榕树,5-wow.com

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