找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 4058|回復(fù): 0
打印 上一主題 下一主題
收起左側(cè)

Asp.net異步上傳文件

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:83710 發(fā)表于 2015-6-25 16:25 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
本帖最后由 hongniu 于 2015-6-25 16:28 編輯

    這個客戶就是上帝的年代里一個好的用戶體驗比實用的功能要得民心,上傳大文件時長期的白屏自己看著都煩。何況是吊的不能再吊甲方。

    借用jquery.from.js插件實現(xiàn)異步無刷新上傳文件。話說如果是自己去實現(xiàn)的話太麻煩了,這不是重點、重點是我不會。

    工具:Jquery.js  、 jquery.form.js

    思路:aspx頁面ajax提交文件給后臺ashx處理保存,處理后返回給前天一個處理結(jié)果。

    詳細:前臺使用html兩個控件:一個是button另一個當(dāng)然是丑到爆的file
        
        1、拖入必須的兩個控件
            
<form id="fm1" method="post">                <input type="file" id="btnfile"  value="提交" />
                <input type="button" id="btn" value="上傳" />
             </form>

        2、 編寫JQuery,給button綁定當(dāng)定單擊事件
            
$(function () {                                            // 頁面加載完后觸發(fā)                $("#btn").click(function () {                     // id為btn的按鈕綁定單擊事件
                    $("#fm1").ajaxSubmit({
                        url: "UploadFileHandler.ashx",
                        type: "post",
                        success: function (data) {
                            alert(data);
                        }
                    });
                });
            })

        3、后臺ashx處理文件并保存
        public void ProcessRequest(HttpContext context)

        {
            context.Response.ContentType = "text/plain";
            // 獲取上傳的文件的對象  
            HttpPostedFile img = context.Request.Files["btnfile"];


            // 獲取上傳文件的名稱  
            string s = img.FileName;
            // 截取獲得上傳文件的名稱(ie上傳會把絕對路徑也連帶上,這里只得到文件的名稱)  
            string str = s.Substring(s.LastIndexOf("\\") + 1);
            string path = "~/UploadFiles/" + str;
            // 保存文件  
            img.SaveAs(context.Server.MapPath(path));
            // HttpRuntime.AppDomainAppVirtualPath主要是獲取應(yīng)用程序虛擬路徑名稱,因為響應(yīng)給頁面時不會自動添加而導(dǎo)致無法顯示圖片
            //context.Response.Write(HttpRuntime.AppDomainAppVirtualPath + path.Substring(1));//path.Substring(1)用來去除第一個~字符
            context.Response.Write("提示:文件上傳成功!");
        }

        4、到此為止就可以實現(xiàn)異步上傳了,但是你會發(fā)現(xiàn)上傳4M以上的文件就會出錯。所以還需要在配置文件中修改一下文件最大值以及響應(yīng)時間。

        
<httpRuntime  targetFramework="4.5" maxRequestLength="1048576" executionTimeout="3600" />


分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機教程網(wǎng)

快速回復(fù) 返回頂部 返回列表