Ftp上传的文件损坏,除非"txt"c#文件

本文关键字:quot 文件 txt 除非 损坏 Ftp | 更新日期: 2023-09-27 17:54:45

我在c#中使用FTP服务器,我必须上传不同类型的文件(.png, .xlsx, docx....),目前上传是为每种文件类型完成的,但如果我试图打开一个文件(除了.txt),它说该文件已损坏。我做错了什么?

谢谢

    FtpWebResponse response = null;
    try
    {
        FtpWebRequest request = (FtpWebRequest)WebRequest.Create(url);
        if (request == null)
        {
            result.SetError(Translate.InvalidUrl, url);
            return false;
        }
        request.Method = WebRequestMethods.Ftp.UploadFile;
        request.UseBinary = true;
        request.Credentials = new NetworkCredential(username, password);
        if (sourceStream == null)
        {
            result.SetError(Translate.FileErrorReading);
            return false;
        }
        byte[] fileContents = Encoding.UTF8.GetBytes(sourceStream.ReadToEnd());
        sourceStream.Close();
        request.ContentLength = fileContents.Length;
        Stream requestStream = request.GetRequestStream();
        requestStream.Write(fileContents, 0, fileContents.Length);
        requestStream.Close();
        response = (FtpWebResponse)request.GetResponse();
        result.SetInformation(Translate.FileSuccefullUpload, filename);
    }
    catch (Exception e)
    {
        result.SetError(e.Message);
        return false;
    }
    finally
    {
        if (response != null)
            response.Close();
    }
    return result.Successful;
    }

Ftp上传的文件损坏,除非"txt"c#文件

为什么使用Encoding.UTF8.GetBytes ?

这个修剪字节。

您应该以二进制模式(即File.ReadAllBytes)读取数据。

检查是否使用ASCII或BINARY传输模式