1. 程式人生 > >不使用ASP.NET中的伺服器控制元件將如何上傳檔案?

不使用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();
               
            }
}