【问题标题】:Is it possible to rename a file that can be found locally before uploading it to a FTP using C#在使用 C# 将文件上传到 FTP 之前,是否可以重命名可以在本地找到的文件
【发布时间】:2015-12-14 11:06:29
【问题描述】:

所以我在本地有一个文件需要保持相同的名称。但是当我将文件上传到 FTP 时,我想重命名它,或者在文件名中添加一些 ekstra。这是我上传文件的方式。

string localPath = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments);
            string fileName = "//XmlDocument.xml";    
FtpWebRequest requestFTPUploader = (FtpWebRequest)WebRequest.Create("ftp://000.000.000/Documents" + fileName);
            requestFTPUploader.Credentials = new NetworkCredential(ftpUsername, ftpPassword);
            requestFTPUploader.Method = WebRequestMethods.Ftp.UploadFile;

            FileInfo fileInfo = new FileInfo(localPath + fileName);
            FileStream fileStream = fileInfo.OpenRead();

            int bufferLength = 2048;
            byte[] buffer = new byte[bufferLength];

            Stream uploadStream = requestFTPUploader.GetRequestStream();
            int contentLength = fileStream.Read(buffer, 0, bufferLength);

            while (contentLength != 0)
            {
                uploadStream.Write(buffer, 0, contentLength);
                contentLength = fileStream.Read(buffer, 0, bufferLength);
            }

            uploadStream.Close();
            fileStream.Close();

            requestFTPUploader = null;

【问题讨论】:

  • 那你为什么不简单地重命名它呢? System.IO.File.Move("旧文件名", "新文件名"); (或只是复制它)
  • 因此,您有一个文件“file1”,并且在某些条件下,您希望将其重命名为“file2”,但同时保留原来的“file1”。我不知道,也许有一个看不见的隐藏复杂性,但是通过将新名称设置为副本来复制文件,然后上传这个新版本并删除它呢?基本上,如果您必须手动执行此操作,您自己会在同样的情况下做什么。
  • @L-Three 我是使用 ftps 的新手。但我试图将 somting 添加到“文件名”属性,但它给了我一个错误。提示找不到文件?
  • @L-Three 我不熟悉 System.IO.File.Move。我想要的是读取本地文件,然后重命名它,然后将其上传到 ftp。虽然本地文件没有任何反应。本地文件是只读的
  • 没有什么不好的。只是试图强调未来的重点(这样您在处理与文件相关的其他问题时就不会遇到同样的问题)。

标签: c# ftp


【解决方案1】:

您尝试上传的文件的名称与您要上传到的服务器上的名称之间没有任何关系。

您可以将foo.jpg 上传为bar.exe,没有人会睁一只眼闭一只眼。

所以改变这个:

FtpWebRequest requestFTPUploader = (FtpWebRequest)WebRequest.Create("..." + fileName);

到这里:

FtpWebRequest requestFTPUploader = (FtpWebRequest)WebRequest.Create("..." + ftpFileName);

你可以走了。

【讨论】:

  • 如果我尝试这个我得到一个新的错误。在这行代码Stream uploadStream = requestFTPUploader.GetRequestStream(); 它说,远程服务器返回了一个错误。 550 文件不可用。
  • 那你没有设置Method = WebRequestMethods.Ftp.UploadFile
  • 我在代码requestFTPUploader.Method = WebRequestMethods.Ftp.UploadFile; 中调用它。你是这个意思吗?
  • 如果你尝试搜索,你会找到stackoverflow.com/questions/17471745/…
猜你喜欢
  • 1970-01-01
  • 2018-07-24
  • 1970-01-01
  • 2018-04-12
  • 1970-01-01
  • 2011-07-07
  • 1970-01-01
  • 2016-09-21
  • 1970-01-01
相关资源
最近更新 更多