Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/328.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ftp上载的文件已损坏,除非;txt";文件c#_C#_Upload_Ftpwebrequest - Fatal编程技术网

Ftp上载的文件已损坏,除非;txt";文件c#

Ftp上载的文件已损坏,除非;txt";文件c#,c#,upload,ftpwebrequest,C#,Upload,Ftpwebrequest,我使用的是c#中的FTP服务器,我必须上传不同类型的文件(.png、.xlsx、docx…),目前每个文件类型的上传都已完成,但如果我试图打开一个文件(除了.txt),它会说该文件已损坏。 我做错了什么 多谢各位 FtpWebResponse response = null; try { FtpWebRequest request = (FtpWebRequest)WebRequest.Create(url); if (request ==

我使用的是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;
    }

检查是否使用ASCII或二进制传输模式。

为什么使用
编码.UTF8.GetBytes

这是一个字节

您应该以二进制模式读取数据(即
文件.ReadAllBytes