Итак, я пытаюсь загрузить файл на свой ftp-сервер. Кажется, все работает так, как ожидалось, но когда я открываю файл с ftp, я получаю ошибку ввода-вывода. Локальный файл работает нормально. Как файл портится после загрузки. Я обнаружил аналогичную проблему здесь.
Здесь я прочитал, что вы должны изменить режим передачи на двоичный. Я попытался установить ftpRequest.UseBinary = true;
, но все равно получаю ошибку ввода-вывода. Должен ли я где-то еще менять режим передачи?
Это мой код загрузки на 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);
}
Используя веб-клиент, я получаю сообщение об ошибке:
Удаленный сервер вернул ошибку: (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);
}
ftpPath + fileName + ".pdf"
? - person mkl   schedule 31.10.2013ftp://
перед этим? UploadFile ожидает URI. - person mkl   schedule 01.11.2013