アップロード利器-SWFUpload

13335 ワード

SWFUploadアップロードコンポーネント
     SWFUpload 最初はVinter webb.seだった 開発されたクライアントファイルアップロードツール.これはjavascriptとflashを連携して、ブラウザで伝統的なアップロードタグより優れた機能を提供します.SWFUploadの主な特性: 
  • ファイル閲覧ダイアログで複数のファイルを選択できます.
  • AJAXスタイルのアップロードは、
  • を更新しなくても大丈夫です.
    アップロード中の各種イベント
    画像のサイズはクライアントで調節できます.
    使用するクラスの名前空間は各種jsライブラリ(i.e.jQuery、Prottypeなど)に対応しています.
    Flash 9 and Flash 10(2.2.0バージョン後、flash 8へのサポートをキャンセル)対応最近のプロジェクトでは画像をアップロードする機能はSWFUploadを使っています.個人的にはその機能は非常に強いと思います.プログレスバー、キューアップロード、画像スクリーン、マルチスレッドアップロードなどの機能をサポートします.
    SWFUploadアップロード画像機能:
    1ダウンロードSWFUpload:http://files.cnblogs.com/xufeiyang/SWFUpload.rarこのバージョンは2.2です.最新版は自分で検索できます.
    2.swfupload.jsを導入して、swfupload.queue.js、hander.jsはページに着きます.
    3.変数を定義し、設定対象を設定します.
     var swfUploader;  //       
    
    
    
    $(function () {
    
                var settings = {
    
                    flash_url: "/SWFUpload/Flash/swfupload.swf",
    
                    upload_url: "/bgAdmin/ajax/doImageUpload.ashx",
    
                    post_params: { "ASPNETSESSION": "NO" },        //         
    
                    file_size_limit: "5 MB",
    
                    file_types: "*.jpg;*.png;*.gif;*.bmp;*jpeg",  //         ,       
    
                    file_types_description: "Images",
    
                    file_upload_limit: 0,
    
                    file_queue_limit: 0,
    
                    //                custom_settings: {
    
                    //                    progressTarget: "fsUploadProgress",
    
                    //                    cancelButtonId: "btnCancel"
    
                    //                },
    
                    debug: false,
    
    
    
                    // Button settings
    
                    button_image_url: "/SWFUpload/Images/TestImageNoText_65x80.png",
    
                    button_width: "100",
    
                    button_height: "29",
    
                    button_placeholder_id: "spanButtonPlaceHolder",
    
                    button_text: '<span class="theFont">    </span>',
    
                    button_text_style: ".theFont { font-size: 16; }",
    
                    button_text_left_padding: 12,
    
                    button_text_top_padding: 3,
    
    
    
                    // The event handler functions are defined in handlers.js         hander.js  
    
    
    
                    file_queue_error_handler: fileQueueError,
    
                    file_dialog_complete_handler: fileDialogComplete,
    
    
    
                    upload_progress_handler: uploadProgress,
    
                    upload_error_handler: uploadError,
    
                    upload_success_handler: uploadSuccess,
    
                    upload_complete_handler: uploadComplete
    
                    // Queue plugin event
    
    
    
                }
    
    
    
                swfUploader= new SWFUpload(settings);
    
    
    
            });      


    <span id="spanButtonPlaceHolder"></span>
    <input id="imageUrlAdd" type="text" maxlength="100" readonly="readonly" value=" " />
    hander.jsの内容は添付ファイルの中にあります.ここでは主に自分を満足させるために、uplloadSuccessを修正しました.
     // handers
    
     function uploadSuccess(file, serverData) {
    
                try {
    
                    var jsonStr = $.parseJSON(serverData);
    
    
    
                    if (jsonStr.success) {
    
                        setImageUrl(jsonStr.imagePath);
    
    
    
                    } else if (jsonStr.timeout) {
    
                        window.location.href = "/bgAdmin/Login/login.html";
    
                    } else {
    
                        alert(data.error);
    
                    }
    
                } catch (ex) {
    
                    this.debug(ex);
    
                }
    
            }
      function setImageUrl(imgPath){     $('('∀mageUrlAdd').val(imgPath);  }
     
    3.次は一般的な処理手順を書きます.asp.netで処理したファイルはdoImageUpload.asxです.パラメータupladuurl:「/bgAdmin/ajax/doImageUpload.asx」などです.
    4.doImageUpload.asx処理プログラムを作成する
    context.Response.ContentType = "text/json";
    
    //QL.BLL.images imagesBll = new QL.BLL.images();
    
    var dic = new Dictionary<string, object>();
    
    string jsonStr = "[]";
    
    string errmsg = "";
    
    
    
    HttpPostedFile file = context.Request.Files["Filedata"];//    
    
    
    
    string fileName = Path.GetFileName(file.FileName);//     
    
    string fileLoadName = "";
    
    string fileExt = Path.GetExtension(fileName);//      
    
    
    
    if (fileExt.Equals(".jpg", StringComparison.InvariantCultureIgnoreCase)
    
                    || fileExt.Equals(".png", StringComparison.InvariantCultureIgnoreCase)
    
                    || fileExt.Equals(".gif", StringComparison.InvariantCultureIgnoreCase)
    
                    || fileExt.Equals(".bmp", StringComparison.InvariantCultureIgnoreCase)
    
                    || fileExt.Equals(".jpeg", StringComparison.InvariantCultureIgnoreCase))
    
    {
    
            //      ,     /UploadImg/  / /
    
            string dircStr = "/images/Carousel/" + DateTime.Now.Year + "-" + DateTime.Now.Month + "/";
    
    
    
            //                ,     Path.GetDirectoryName(dircStr),           
    
            Directory.CreateDirectory(Path.GetDirectoryName(context.Server.MapPath(dircStr)));
    
    
    // , guid Guid.NewGuid().ToString() DateTime now = DateTime.Now; fileLoadName = dircStr + fileName.Substring(0, fileName.LastIndexOf('.'))
    + "-" + now.Day + "-" + now.Minute + "-" + now.Second + "-" + now.Millisecond + fileExt; // file.SaveAs(context.Server.MapPath(fileLoadName)); dic.Add("success", true); dic.Add("imagePath", fileLoadName); // } else { dic.Add("success", false); errmsg += ""; } // json, dic.Add("error", errmsg); jsonStr = Newtonsoft.Json.JsonConvert.SerializeObject(dic); context.Response.Write(jsonStr);
    終了:これで皆さんは簡単な画像アップロード機能を完成できるはずです.時間が短いです.もしよろしければ、写真を撮っても大丈夫です.http://demo.swfupload.org/v220/index.htmを参照してもいいです. もっと多くの機能を学ぶ.