顯示具有 FTP 標籤的文章。 顯示所有文章
顯示具有 FTP 標籤的文章。 顯示所有文章

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#中汉字的繁体和简体的相互转换的两个方法!

2012年12月17日 星期一

[學習] 限制上傳的副檔名

Private Sub Button12_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button12.Click

     Dim f As OpenFileDialog = New OpenFileDialog()
     f.Filter = "文件格式(*.pdf;*.doc;*.docx;*.ppt;*.pptx;*.xls;*.xlsx)|*.pdf;*.doc;*.docx;*.ppt;*.pptx;*.xls;*.xlsx"  '支援格式   'WMF   'ICO
     'f.Filter = "All   Image   Formats   (*.bmp;*.jpg;*.jpeg;*.gif;*.png;*.tif)| " & _
     '   "*.bmp;*.jpg;*.jpeg;*.gif;*.png;*.tif|Bitmaps   (*.bmp)|*.bmp| " & _
     '   "GIFs   (*.gif)|*.gif|JPEGs   (*.jpg)|*.jpg;*.jpeg|PNGs   (*.png)|*.png|TIFs   (*.tif)|*.tif|All   Files   (*.*)|*.* "

     f.FilterIndex = 1
     f.ShowDialog(Me)
     Me.txbPath.Text = f.FileName

     If Path.GetExtension(txbPath.Text.Trim) = ".pdf" OrElse Path.GetExtension(txbPath.Text.Trim) = ".doc" OrElse Path.GetExtension(txbPath.Text.Trim) = ".docx" OrElse Path.GetExtension(txbPath.Text.Trim) = ".ppt" OrElse Path.GetExtension(txbPath.Text.Trim) = ".pptx" OrElse Path.GetExtension(txbPath.Text.Trim) = ".xls" OrElse Path.GetExtension(txbPath.Text.Trim) = ".xlsx" Then
     'do nothing
     Else
          If txbPath.Text.Trim <> "" Then
               MsgBox("僅 圖片格式(*.pdf;*.doc;*.docx;*.ppt;*.pptx;*.xls;*.xlsx) 可上傳!!")
          End If
          Exit Sub
     End If

'限制檔案大小

'檔圖片轉檔 並縮圖 - 以減少儲存空間

     'MsgBox(Path.GetFileName(f.FileName)) 取得檔案名稱(含副檔名)
     'Path.GetExtension 取得副檔名
     'Me.PictureBox1.ImageLocation = Me.txbPath.Text '取得完整路徑
End Sub

Note:
除了前端判斷
後端也要判斷
小心偽裝的檔案


參考:
VS 2008
.Net 3.5

~~要如何限制上傳的副檔名~~
如何限制FileUpload的副檔名
怎么限制上传图片的格式和大小? - [Asp.net]
上傳檔案時,限制只能pdf、xls的副檔名
OpenFileDialog 元件常用屬性和方法
Path.GetExtension 方法
Path.GetExtension 获取扩展名
[ASP.NET]將上傳圖檔分成大小圖後存入資料庫
Use With statement with OpenFileDialog