此文將介紹 Asp .Net for C# 中使用 uploadify 上傳文件時使用中文檔名的設定方法。

 

aspx Code:

<script type="text/javascript" charset="UTF-8">
        $(document).ready(function () {
            $("#uploadify").uploadify({
                'uploader': '../Scripts/uploadify-v2.1.4/uploadify.swf',
                'script': '../UploadHandler.ashx',//處理上傳動作的檔案
                'cancelImg': '../Scripts/uploadify-v2.1.4/cancel.png',
                'folder': '../PublicFile/文件',//含中文檔名的存放資料夾
                'queueID': 'fileQueue',
                'auto': true,
                'multi': true,
                'removeCompleted': false //上傳完成後,true為自動刪除隊列
            });
        });
</script>

 

假設你處理上傳文件的檔案為UploadHandler.ashx,

ashx程式碼如下:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.IO;
using System.Text;

namespace NewUpload
{
    /// 
    ///UploadHandler 的摘要描述
    /// 
    public class UploadHandler : IHttpHandler
    {

        public void ProcessRequest(HttpContext context)
        {
            context.Response.ContentType = "text/plain";

            //由於uploadify的flash是採用utf-8的編碼方式,所以上傳頁面也要用utf-8編碼,才能正常上傳中文檔名的文件
            context.Request.ContentEncoding = Encoding.GetEncoding("UTF-8");
            context.Response.ContentEncoding = Encoding.GetEncoding("UTF-8");
            context.Response.Charset = "UTF-8";

            HttpPostedFile file = context.Request.Files["Filedata"];

            string uploadPath = HttpContext.Current.Server.MapPath(@context.Request["folder"]) + "//";
            
            if (file != null)
            {
                if (!Directory.Exists(uploadPath))
                {
                    Directory.CreateDirectory(uploadPath);
                }
                file.SaveAs(uploadPath + file.FileName);

                //下面這句代碼缺少的話,無法正常運作
                context.Response.Write("1");
            }
            else
            {
                context.Response.Write("0");
            }
        }

        public bool IsReusable
        {
            get
            {
                return false;
            }
        }
    }
}

 

這樣就可以上傳中文檔名的文件,但是如果想將存放資料夾也正確顯示中文檔名,還必須做以下設定。

在jquery.uploadify.v2.1.4.min.js中修改以下程式碼:

將
g.folder = escape(f.folder);
修改成
g.folder = encodeURI(f.folder);

 

設定完畢。這樣一來,不管是存放資料夾還是上傳的文件都能正確顯示中文檔名了。

, , ,

魔法魚 發表在 痞客邦 PIXNET 留言(1) 人氣()


留言列表 (1)

發表留言
  • X
  • 想問你

    C# 下載檔案 跟 下載之後紀錄 大概是要怎麼寫呢???

    當我按下按鈕,跳至下載頁面,可以下載檔案,之後可以查詢下載過哪些的紀錄

    那些大概要怎麼寫呢??

    幫解決一下 謝謝

  • 下載檔案的部份,
    你可以上Google搜尋 c# 下載 檔案 語法 ,應該會出現蠻多範例的連結。

    紀錄的部份,
    你可以將下載過的檔名、檔案連結存到資料庫,要用的時候,就可以從資料庫叫出,處理過後就能變成下載紀錄。

    魔法魚 於 2011/11/07 16:27 回覆