2013年7月31日 星期三

[除錯] IIS(FTP)伺服器(繁體XP系統),無法上傳簡體檔案之解決!

原因:
繁體系統的IIS(FTP)伺服器,無法支援簡體中文!

解決:
1.改用支援簡體中文的FTP SERVER來架設!
2.限制檔案名稱僅可為「繁中」、「英數」!
3.將簡體轉為繁體,再上傳至FTP!
4.將FTP檔案存為(sn)-Guid,
而資料庫則存為 sn, 檔名+Guid as 檔名,
程式顯示時取檔名, 下載時則取(sn)-Guid...

Path.GetFileName(txbPath.Text.Trim).ToString & "+" & BitConverter.ToInt64(Guid.NewGuid().ToByteArray(), 0).ToString
傳回不重覆的長度 19 GUID 數字

 參考:
Directory 類別
DirectoryInfo 類別
HOW TO:列舉目錄和檔案
HOW TO:逐一查看目錄樹狀結構 (C# 程式設計手冊)
C#-批次處理目錄下所有檔案的方法
[C#]使用 Path 類別取得檔案或目錄路徑資訊
[C#]Winform選擇目錄路徑(FolderBrowserDialog)與選擇檔案名稱(OpenFileDialog)的用法
[programming-c#]把目錄下的檔案列出來, DirectoryInfo, StreamWriter
C#資料夾選擇框的實現(C#選擇資料夾,C# 打開資料夾,C# 流覽資料夾,C#怎麼選擇資料夾)
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.IO;
//需加入參考 Microsoft.VisualBasic
using Microsoft.VisualBasic;

namespace trans2zhtw
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            if (!System.IO.Directory.Exists(this.txtDirectoryPath.Text))
            {
                //throw new ArgumentException();
                MessageBox.Show("請選擇目錄!!");
                return;
            }
               
            foreach (FileInfo file in RootDirs.GetFiles())
            {
                //MessageBox.Show(file.FullName);
                //MessageBox.Show(file.Directory.FullName); = MessageBox.Show(file.DirectoryName);
                FileSystem.Rename(file.FullName, file.DirectoryName + @"\" + Strings.StrConv(file.Name, VbStrConv.TraditionalChinese, 2052));
            }
        }

        DirectoryInfo RootDirs;
        DirectoryInfo[] SubDirs;
        FileInfo[] RootFiles;
        FileInfo[] SubFiles;
        private void button3_Click(object sender, EventArgs e)
        {
            richTextBox1.Clear();
            txtDirectoryPath.Clear();

            //選擇目錄
            FolderBrowserDialog path = new FolderBrowserDialog();
            //MessageBox.Show(path.ShowDialog().ToString());

            //if (System.IO.Directory.Exists(path.SelectedPath))
            if(path.ShowDialog()==DialogResult.OK)
            {
                this.txtDirectoryPath.Text = path.SelectedPath;

                //System.IO.DirectoryInfo
                RootDirs = new DirectoryInfo(txtDirectoryPath.Text);

                //取得所有檔案(含子目錄)
                RootFiles = RootDirs.GetFiles();

                //取得所有目錄(含子目錄)
                SubDirs = RootDirs.GetDirectories();

                richTextBox1.Text += "[主目錄][" + RootDirs.Name + "]" + "\n";
                foreach (FileInfo file in RootDirs.GetFiles())
                    richTextBox1.Text += file.Name + "\n";

                richTextBox1.Text += "\n";

                //取得主目錄下的子目錄, 不包含子目錄下的子目錄...
                foreach (DirectoryInfo sdir in SubDirs)
                {
                    richTextBox1.Text += "[子目錄][" + sdir.Name + "]" + "\n";

                    //取得目各子目錄下所有檔案
                    SubFiles = sdir.GetFiles();
                    foreach (FileInfo file in SubFiles)
                        richTextBox1.Text += file.Name + "\n";
                }
            }
        }
    }
}


[C#] 簡體亂碼轉換
繁體的IIS FTP 不能上傳簡體文件

請教簡體XP顯示繁體中文問題!
怎样才能是繁体和简体的操作系统都能看到简体FTP服务器里面的数据

[VB.NET]中文繁簡體轉換
在 VB.Net 中使用 StrConv 函數進行繁簡字體轉換

如何判断用户在Textbox输入的字符是否为繁体字
VB.NET判断字符是否是GB2312-80的汉字
简体繁体判断

FileSystem.Rename 方法
【VB.Net】使用rename修改檔名
如何使用FileInfo修改檔名

不同語系的轉碼、編碼 / HttpUtility.UrlEncode,Server.UrlEncode兩者差異
如何用 VB 或 VB.Net 來撰寫 ASP 的 Server.URLencode 函數

[SQL] 簡體字存入亂碼解決方式

參考:C#
How can I rename a file in C#?
C# 繁簡轉換效能大車拚
[C#]繁簡轉換好用的類別庫-Microsoft Visual Studio International Pack
C#簡繁轉換
C#中汉字的繁体和简体的相互转换的两个方法!

沒有留言:

張貼留言