c# - C# 中的 ftp 上传文件损坏

标签 c# asp.net ftp

你好,我有这段代码可以使用 ftp 通过 C# 上传图像或 Word 文件。

代码工作正常,它将文件上传到 ftp,但文件在上传后损坏,请告知这有什么问题,谢谢

    //FTP Server URL.
    string ftp = "ftp://ftpip/";

    //FTP Folder name. Leave blank if you want to upload to root folder.
    string ftpFolder = "folder path to upload";

    byte[] fileBytes = null;

    //Read the FileName and convert it to Byte array.
    string fileName = Path.GetFileName(FileUpload1.FileName);
    using (StreamReader fileStream = new StreamReader(FileUpload1.PostedFile.InputStream))
    {
        fileBytes = Encoding.UTF8.GetBytes(fileStream.ReadToEnd());
        fileStream.Close();
    }

    try
    {
        //Create FTP Request.
        FtpWebRequest request = (FtpWebRequest)WebRequest.Create(ftp + ftpFolder + fileName);
        request.Method = WebRequestMethods.Ftp.UploadFile;

        //Enter FTP Server credentials.
        request.Credentials = new NetworkCredential("ftpuser", "ftppassowrd");
        request.ContentLength = fileBytes.Length;
        request.UsePassive = true;
        request.UseBinary = true;
        request.ServicePoint.ConnectionLimit = fileBytes.Length;
        request.EnableSsl = false;

        using (Stream requestStream = request.GetRequestStream())
        {
            requestStream.Write(fileBytes, 0, fileBytes.Length);
            requestStream.Close();
        }

        FtpWebResponse response = (FtpWebResponse)request.GetResponse();

        lblMessage.Text += fileName + " uploaded.<br />";
        response.Close();
    }
    catch (WebException ex)
    {
        throw new Exception((ex.Response as FtpWebResponse).StatusDescription);
    }

最佳答案

您可以使用 BinaryReader 而不是以 UTF8 编码获取字节。你应该改变它;

using (StreamReader fileStream = new StreamReader(FileUpload1.PostedFile.InputStream))
{
    fileBytes = Encoding.UTF8.GetBytes(fileStream.ReadToEnd());
    fileStream.Close();
}

FileUpload1.PostedFile.InputStream.Seek(0, SeekOrigin.Begin);
using (var binaryReader = new BinaryReader(FileUpload1.PostedFile.InputStream))
{
    fileBytes = binaryReader.ReadBytes(FileUpload1.PostedFile.ContentLength);
}

关于c# - C# 中的 ftp 上传文件损坏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48460154/

相关文章:

c# - Gridview 标题链接按钮未更新

php - 如何判断 mysqldump 何时完成

linux - Aria2c并行下载参数

c# - 如何将值添加到数据表C#中的特定列和行的值

c# - 在 ASP.NET 5 中访问中间件中的 DbContext

c# - 如何并行和串行处理集合中的项目

c# - 在 .net 中管理高/低优先级线程

c# - Web 方法与 JavaScript 背后的代码?

c# - 如何在 ASP.NET 中使用配置文件?

vb.net - 在 FTP 中创建目录