程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> .NET實例教程 >> Ext 上傳文件,前後台實現, Asp.net 代碼

Ext 上傳文件,前後台實現, Asp.net 代碼

編輯:.NET實例教程

菠菜我最近在搞 Ext 開發的郵件系統, 其中就有用到如何上傳文件這個大眾化的問題,經過我一上午的研究和查資料終於搞定,現在決定把代碼共享出來,方便大家,呵呵.

純屬個人原創,所以轉貼請注明出處:
http://blog.csdn.Net/zhangyunbo1116

當然,我使用的是 ExtJS論壇中的一個組件, 非常感歎作者的牛比哄哄. 作者的大名叫: MaximGB ..  呵呵,現在我就為你到來如何開發這樣的上傳文件. 基本結構是:
Ext 前台實現界面,後台采用 ASP.Net 開發. JSP 我會,但就是 php 偶不會,可是在老外的論壇,PHP可是王者哦,呵呵!
需要下載的 Ext 上傳文件的組件擴展:
http://max-bazhenov.com/dev/upload-dialog-2.0/index.PHP
進入開發作者的頁面,下載最新的上傳組件包, 如果不是最新的擴展包,有可能作者改過的bug你沒有修正,這樣,豈不是很慘哦!
現在進入正題,我在這裡只提供一個最最基本的 demo 程序, 當然需要你知道的前提知識是,如何使用 Ext, 如何在自己的頁面中加入 JS 文件,如果這個你都不會,我真的是很無語,你還是先開看 Ext 的基本教程吧,然後再看我這篇文章.

下載後的壓縮包解壓,你就會發現文件不是很多,我只提兩個關鍵的文件:
Ext.ux.UploadDialog.js   這個就是實現功能的 js文件,但是是格式化的,方便感興趣的人自己閱讀的 JS 代碼文件,當你發布應用的時候,建議不要引入該文件,而是引入下面一個文件.
Ext.ux.UploadDialog.packed.JS  是壓縮好的,引入這個文件,可以提高用戶的訪問速度.
Ext.ux.UploadDialog.CSS  這是樣式文件,應該導入.
如果你嫌麻煩,想直接看真實的東東,那就到這裡下載,裡面還有我漢化的一個小小的js,文件,只要覆蓋: Ext.ux.UploadDialog.packed.JS 就 可以了.

http://download.csdn.Net/user/zhangyunbo1116/
http://download.csdn.Net/source/345961


先來 Ext 寫的界面 和對應的JS 代碼, 該導入的你自己倒哦



<html XMLns="http://www.w3.org/1999/xHtml" >
<head>
    <title>測試如何使用Ext 2.0</title>
    <meta http-equiv="Content-Type" content="text/Html; charset=gb2312">
    <!-- 包含Ext2.0 CSS 文件-->
    <link rel="stylesheet"  href="../Ext-2.0/resources/css/ext-all.CSS" />
    
    <!-- 包含Ext2.0 腳本文件-->
    <script type="text/Javascript" src="../Ext-2.0/adapter/ext/ext-base.JS"></script>
    <script type="text/Javascript" src="../Ext-2.0/ext-all.JS"></script>
    <script type="text/Javascript" src="js/TestFormUpload.JS"></script>
    
    <!-- 上傳組件使用的鏈接-->
    <link rel="stylesheet"  href="Ext.ux.UploadDialog/UploadDialog/css/Ext.ux.UploadDialog.CSS" />    
    <script type="text/Javascript" src="Ext.ux.UploadDialog/UploadDialog/Ext.ux.UploadDialog.packed.JS"></script>
    
</head>
<body>
 <div id=''demo-panel''>
  <h3>Demo panel</h3>
        <div id=''file-list''></div>
        <div id=''show-dialog-btn''></div>
 </div>
</body>
</Html>

 

// JScript File
Ext.onReady(function() ...{
Ext.QuickTips.init();  
  var btnShow = new Ext.Button(...{
        text:''上傳文件'',
        listeners:...{
            click:function(btnThis,eventobj)...{
               dialog = new Ext.ux.UploadDialog.Dialog(...{
                  url: ''UploadFile.ASPx'',
                  reset_on_hide: false,
                  allow_close_on_upload: true,
                  upload_autostart: true
                });
          &nbsp;     dialog.show(''show-button'');
            }
        }
  });
   btnShow.render("show-dialog-btn");
}); //Ext.onReady


using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.IO; //注意,導入

public partial class PagesExtMail_ASPNet_UploadFile : System.Web.UI.Page
...{
    log4net.ILog log = log4net.LogManager.GetLogger(System.Reflection.MethoDBase.GetCurrentMethod().DeclaringType);
    
    protected void Page_Load(object sender, EventArgs e)
    ...{
        //我自己有日志,如果你沒有去掉就可以.
        log.Info("Request.Files.Count=" + Request.Files.Count);
        string JSONString = string.Empty;
        try
   ...{
            if (Request.Files.Count > 0)
            ...{
                HttpPostedFile postedFile = Request.Files[0];
                string savePath ;
                //請在你的d 盤下要建立一個upload 這樣的測試目錄.如果沒有,會出錯的
                //可不要告訴我你連D 盤都沒有,如果這樣,算你狠...
                savePath = @"D:/upload/";
                savePath += Path.GetFileName(postedFile.FileName);

                //檢查是否在服務器上已經存在用戶上傳的同名文件
                if (File.Exists(savePath))
                ...{
                    File.Delete(savePath);
                }
                log.Debug(savePath);
                postedFile.SaveAs(savePath);
                JSONString = "{success:true,message:''上傳成功''}";
            }
     else
                log.Info("Request.Files.Count=" + Request.Files.Count);
        }//try
        catch (Exception ex)
        ...{
            JSONString = "{success:false,message:''上傳失敗,可能因為上傳文件過大導致!''}";
            log.Info("上傳文件出錯:"+ex.Message);
            log.Info("堆棧信息是 :" + ex.StackTrace);
        }//catch
        finally
        ...{
            log.Debug("jSONString=" + JSONString);
            
        }
        //輸出上傳文件後的後台相應信息, 
        //在這裡請你注意刪除你對應頁面的所有Html 腳本,只需要保留page 頭就可以
        Response.Write(JSONString);
        Response.Flush();

    }//pageload
}//class

關於漢化問題,開發的作者說的很詳細, 我就很簡單, 直接編輯了Ext.ux.UploadDialog.packed.JS  . 在這個頁面的最後由一個對象Ext.ux.UploadDialog.Dialog.prototype. i18n .. 直接把裡面的英文改成中文就可以,如果各位還信得過偶的英文水平,可以拷貝偶的翻譯的東東,下載覆蓋.

可以到這裡下載:

 

var p=Ext.ux.UploadDialog.Dialog.prototype;p.i18n={title:"上傳文件",state_col_title:"狀態",state_col_width:70,filename_col_title:"文件名",filename_col_width:230,note_col_title:"備注",note_col_width:150,add_btn_text:"添加",add_btn_tip:"添加文件到上傳隊列。",remove_btn_text:"刪除",remove_btn_tip:"從上傳隊列刪除文件。",reset_btn_text:"重置",reset_btn_tip:"重置隊列。",upload_btn_start_text:"開始上傳",upload_btn_stop_text:"中斷上傳",upload_btn_start_tip:"上傳文件對列。",upload_btn_stop_tip:"停止上傳。",close_btn_text:"關閉",close_btn_tip:"關閉上傳對話框。",progress_waiting_text:"等待...",progress_uploading_text:"上傳中: {0} 的 {1} 文件集合成功。",error_msgbox_title:"錯誤",permitted_extensions_join_str:",",err_file_type_not_permitted:"不支持上傳該類型文件.<br/>請選擇下列類型的文件集合 {1}",note_queued_to_upload:"上傳的隊列。",note_processing:"上傳中...",note_upload_failed:"當前請求過多,服務器正忙,不能及時響應或者因特網服務器發生錯誤。",note_upload_success:"成功。",note_upload_error:"上傳文件出錯。",note_aborted:"已經被用戶中斷"}

 

 

到現在,就完了,祝各位新年快樂,萬事大吉,鼠年發財…..


  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved