C# - 文件已损坏上传到服务器后, [英] C# - File is corrupt after uploaded to server
本文介绍了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屋!
查看全文