C# - 文件已损坏上传到服务器后, [英] C# - File is corrupt after uploaded to server

查看:298
本文介绍了C# - 文件已损坏上传到服务器后,的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我用来上传文件Excel和PDF下面的源代码,但该文件被移动到服务器后,该文件已损坏。我认为这个问题是在编码过程 Encoding.UTF8.GetBytes(sourceStream.ReadToEnd()); ,但我不知道如何解决它结果<。 / p>

 公共静态无效sampleUpload()
{
//获取用于与服务器通信的对象。
的FtpWebRequest请求=(的FtpWebRequest)WebRequest.Create(ftp://100.165.80.15:21/output/Group经销商,主要经销商,区域,分公司和目标Report_20120927105003.pdf);
request.Method = WebRequestMethods.Ftp.UploadFile;

//这个例子假设FTP站点使用匿名登录。
request.Credentials =新的NetworkCredential(TOC,fid123 !!);

//文件的内容复制到请求流。
的StreamReader的SourceStream =新的StreamReader(D:\\Group经销商,主要经销商,区域,分公司和目标Report_20120927105003.pdf);
字节[] = fileContents Encoding.UTF8.GetBytes(sourceStream.ReadToEnd());
sourceStream.Close();
request.ContentLength = fileContents.Length;

流requestStream = request.GetRequestStream();
requestStream.Write(fileContents,0,fileContents.Length);
requestStream.Close();

FtpWebResponse响应=(FtpWebResponse)request.GetResponse();

Console.WriteLine(上传文件的完整,状态{0},response.StatusDescription);

response.Close();
}


解决方案

不要读二进制文件为文本。使用 Stream.CopyTo 方法(或等效代码,如果你不能使用.NET 4.0)

 使用(的StreamReader的SourceStream = ...){
使用(流requestStream = request.GetRequestStream())
{
sourceStream.CopyTo(requestStream);
}
}


I used the following source code for upload file excel and pdf, but after the file was moved to server, the file is corrupt. I think the problem is on encoding process Encoding.UTF8.GetBytes(sourceStream.ReadToEnd());, but I don't know how to resolve it.

public static void sampleUpload()
    {
        // Get the object used to communicate with the server.
        FtpWebRequest request = (FtpWebRequest)WebRequest.Create("ftp://100.165.80.15:21/output/Group Dealer, Main Dealer, Zone, Branch, and Destination Report_20120927105003.pdf");
        request.Method = WebRequestMethods.Ftp.UploadFile;

        // This example assumes the FTP site uses anonymous logon.
        request.Credentials = new NetworkCredential("toc", "fid123!!");

        // Copy the contents of the file to the request stream.
        StreamReader sourceStream = new StreamReader("D:\\Group Dealer, Main Dealer, Zone, Branch, and Destination Report_20120927105003.pdf");
        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();

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

        Console.WriteLine("Upload File Complete, status {0}", response.StatusDescription);

        response.Close();
    }

解决方案

Don't read binary files as text. Use Stream.CopyTo method (or equivalent code if you can't use .Net 4.0)

 using(StreamReader sourceStream = ...){
   using(Stream requestStream = request.GetRequestStream())
   {
     sourceStream.CopyTo(requestStream);
   }
 }

这篇关于C# - 文件已损坏上传到服务器后,的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆