none
[FTP] 無法對新建的目錄上傳檔案? RRS feed

  • 問題

  • 大家好,這邊請教前輩,問題如下

    首先FTP資料夾已經有權限,而我可以正常的上傳檔案到這個資料夾(透過 C# 程式);

    如今我透過程式(C# Client)在這個資料夾裡新增目錄,使用方法參考:http://goo.gl/YrWOc

    緊接著我同時要對這個新建的目錄上傳檔案,但卻發生錯誤(550),也嘗試了其他方法,

    還是無法成功上傳檔案,請教各位前輩了

    2012年10月17日 下午 05:34

解答

  • 我測試沒有問題可以上傳 

    會得到 Upload File Complete, status 226 Transfer OK

    確認 getFileURL 是正確的格式  



    以下為簽名檔,如果你愛拉椅子坐那就是你的問題。
    先查MSDN文件庫
    再用GOOGLE搜尋
    才到論壇來發問

    這是論壇不是技術支援中心
    沒有人得無償解答你的問題

    在標題或文章註明很急
    不會增加網友回覆速度

    • 已編輯 Alex_Lee 2012年10月18日 上午 10:06 補結果圖
    • 已標示為解答 阿苦 2012年10月21日 上午 07:50
    2012年10月18日 上午 09:51
  • 由權限查起…

    理直氣和,切記。

    http://blog.kkbruce.net

    • 已標示為解答 阿苦 2012年10月21日 上午 07:50
    2012年10月18日 上午 10:39

所有回覆

  • 550/使用者/使用者/子資料夾/: 無此檔案或目錄。

    这是550的错误码。


    http://mysftway.blogspot.com/ 熱誠熱心地幫忙大家! 希望與大家切磋技術哦~

    2012年10月18日 上午 03:34
  • 小弟起初也懷疑是否沒有該資料夾?

    只是 實際遠端登入主機去查看,其實目錄是存在的,

    若是我既然可以透過程式去建立一個目錄,理論上我同樣可以對該目錄進行檔案上傳,

    只是很奇怪似乎不行;其實我主要的目的,是想搬整個資料夾 上傳到 FTP 上,

    不知道各位前輩有沒有建議的解決方案

    2012年10月18日 上午 07:38
  • 有正確指定WebFtpRequeest.Method 為UploadFile

    然後呼叫GetResponseStream ?

    參考MSDN GetResponseStream 的範例


    以下為簽名檔,如果你愛拉椅子坐那就是你的問題。
    先查MSDN文件庫
    再用GOOGLE搜尋
    才到論壇來發問

    這是論壇不是技術支援中心
    沒有人得無償解答你的問題

    在標題或文章註明很急
    不會增加網友回覆速度

    2012年10月18日 上午 08:07
  • 是的,確實有使用 MSDN 範例來上傳檔案

    2012年10月18日 上午 08:30
  • po一下你的程式碼.... ftp server 的 ip 及登入帳密 自行改掉

    以下為簽名檔,如果你愛拉椅子坐那就是你的問題。
    先查MSDN文件庫
    再用GOOGLE搜尋
    才到論壇來發問

    這是論壇不是技術支援中心
    沒有人得無償解答你的問題

    在標題或文章註明很急
    不會增加網友回覆速度

    2012年10月18日 上午 08:36
  • 好的,

    檔案上傳

     public static bool UploadFileToFTP2(Uri serverUri, string fileName, string file, string userName, string password) {
                bool returnbool = false;
    
                if(serverUri.Scheme != Uri.UriSchemeFtp)                           //檢查FTP路徑是否有誤
    	        {
                    Console.WriteLine("FTP的路徑錯誤");
                    throw new Exception("FTP的路徑錯誤");                           //有錯誤,丟出例外
                }
    
                try {
                    Uri getFileURL = new Uri(serverUri.ToString() + fileName);      //先組合檔案的路徑
                    Console.WriteLine("上傳:" + getFileURL.ToString());
    
                    FtpWebRequest request = (FtpWebRequest)WebRequest.Create(getFileURL);
                    request.Method = WebRequestMethods.Ftp.UploadFile;
    
                    if(userName != String.Empty) {
                        request.Credentials = new NetworkCredential(userName, password);    //驗證身份
                    }
    
    
    
                    StreamReader sourceStream = new StreamReader(file);                     //讀取傳送檔案
    
    
                    //byte[] fileContents = Encoding.UTF8.GetBytes(sourceStream.ReadToEnd());
                    byte[] fileContents = File.ReadAllBytes(file);
    
                    sourceStream.Close();
                    request.ContentLength = fileContents.Length;
    
    
                    Stream requestStream = request.GetRequestStream();            //用來上傳的資料流
                    requestStream.Write(fileContents, 0, fileContents.Length);       //執行寫入
    
                    requestStream.Close();
    
                    FtpWebResponse response = (FtpWebResponse)request.GetResponse();//執行上傳及回覆訊息
    
                    Console.WriteLine("Upload File Complete, status {0}", response.StatusDescription);
    
                    response.Close();
                }
                catch(WebException e) {
                    Console.WriteLine(e.ToString());
                }
    
                return returnbool;
            }

    2012年10月18日 上午 08:45
  • 我測試沒有問題可以上傳 

    會得到 Upload File Complete, status 226 Transfer OK

    確認 getFileURL 是正確的格式  



    以下為簽名檔,如果你愛拉椅子坐那就是你的問題。
    先查MSDN文件庫
    再用GOOGLE搜尋
    才到論壇來發問

    這是論壇不是技術支援中心
    沒有人得無償解答你的問題

    在標題或文章註明很急
    不會增加網友回覆速度

    • 已編輯 Alex_Lee 2012年10月18日 上午 10:06 補結果圖
    • 已標示為解答 阿苦 2012年10月21日 上午 07:50
    2012年10月18日 上午 09:51
  • 由權限查起…

    理直氣和,切記。

    http://blog.kkbruce.net

    • 已標示為解答 阿苦 2012年10月21日 上午 07:50
    2012年10月18日 上午 10:39
  • ftp server 的換行指令模擬成 RFC 還是 Unix ?

    .Net 內建的 Ftp 不支援 unix (含 Linux) ,只支援 RFC 換行指令。


    論壇是網友平等互助 保證解答請至 微軟技術支援服務


    提問時,錯誤情境描述與錯誤訊息很重要,情境描述包含你做了什麼,預期的結果與實際發生的結果。一個最爛的問法範例:「我的電腦電腦怎麼不能開機?」誰知道你家是不是沒電還是你根本找不到電源鈕。

    2012年10月19日 下午 01:36
  • 謝謝各位前輩的分享,

    我覺得應該是 權限或是資料夾設定的關係,

    由於客戶端有自己 MIS ,而在確認之後發現客戶那是透過 IIS 指定資料夾分享的方式 建立 FTP,

    客戶那邊又不願意開放權限,所以我就試到這邊了,

    謝謝大家

    2012年10月21日 上午 07:49