だから私は私のftpサーバーにファイルをアップロードしようとしています。すべてが期待どおりに機能しているように見えますが、ftp からファイルを開くと、I/O エラーが発生します。ローカルファイルは問題なく動作します。アップロード後にファイルが破損する方法。ここで同様の問題を見つけました。
ここで、転送モードをバイナリに変更する必要があることを読みました。設定しようとしましたftpRequest.UseBinary = true;
が、それでも I/O エラーが発生します。どこかで転送モードを変更する必要がありますか?
これは私のftpアップロードコードです:
public string upload(string remoteFile, string localFile)
{
ftpRequest = (FtpWebRequest)FtpWebRequest.Create(host + "/" + remoteFile);
ftpRequest.UseBinary = true;
ftpRequest.Credentials = new NetworkCredential(user, pass);
ftpRequest.Method = WebRequestMethods.Ftp.UploadFile;
// Copy the contents of the file to the request stream.
StreamReader sourceStream = new StreamReader(localFile);
byte[] fileContents = Encoding.UTF8.GetBytes(sourceStream.ReadToEnd());
sourceStream.Close();
ftpRequest.ContentLength = fileContents.Length;
Stream requestStream = ftpRequest.GetRequestStream();
requestStream.Write(fileContents, 0, fileContents.Length);
requestStream.Close();
FtpWebResponse response = (FtpWebResponse)ftpRequest.GetResponse();
response.Close();
return string.Format("Upload File Complete, status {0}", response.StatusDescription);
}
webclient を使用すると、次のエラーが表示されます。
リモート サーバーがエラーを返しました: (553) ファイル名は許可されていません。
これが私のコードです:
private void uploadToPDF(int fileName, string localFilePath, string ftpPath, string baseAddress)
{
WebClient webclient = new WebClient();
webclient.BaseAddress = baseAddress;
webclient.Credentials = new NetworkCredential(username, password);
webclient.UploadFile(ftpPath + fileName + ".pdf", localFilePath);
}