首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在ASP MVC中如何将大文件上传到FTP服务器

在ASP MVC中如何将大文件上传到FTP服务器
EN

Stack Overflow用户
提问于 2018-06-07 04:25:13
回答 2查看 1.4K关注 0票数 1

我正在开发一个ASP MVC网站。现在我需要上传文件(.zip文件)到我的FTP服务器。对于上传,我使用以下代码。

这段代码只上传那些大小小于10Mb的文件。

例如:当我用这个代码上传一个150MB大小的文件时,它就被破坏了,文件大小在我的Ftp服务器上变成了300MB。

所以任何人都可以帮助我..

代码语言:javascript
复制
 byte[] fileBytes = null;

                //Read the FileName and convert it to Byte array.
                string filename = Path.GetFileName(FileUpload1.FileName);

                using (StreamReader fileStream = new StreamReader(FileUpload1.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(ftpUName, ftpPWord);
                    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();

                    response.Close();
                }
                catch (WebException ex)
                {
                    throw new Exception((ex.Response as FtpWebResponse).StatusDescription);
                }
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-06-07 17:35:55

它可能会损坏,因为您正在读取utf8编码的数据。你应该以二进制格式阅读它。

不要使用::

代码语言:javascript
复制
using (StreamReader fileStream = new StreamReader(FileUpload1.InputStream))
{
   fileBytes = Encoding.UTF8.GetBytes(fileStream.ReadToEnd());
   fileStream.Close();
}

您必须使用File.ReadAllBytes或BinaryReader(Stream)

https://msdn.microsoft.com/en-us/library/system.io.file.readallbytes(v=vs.110).aspx

https://msdn.microsoft.com/de-de/library/system.io.binaryreader(v=vs.110).aspx

对于您的示例:

代码语言:javascript
复制
   byte[] fileBytes = File.ReadAllBytes(Path.GetFileName(FileUpload1.FileName));
   try
   {
          //Create FTP Request.
          FtpWebRequest request = (FtpWebRequest)...
票数 1
EN

Stack Overflow用户

发布于 2018-06-07 04:36:54

将此代码添加到您的web.config

代码语言:javascript
复制
<httpRuntime maxRequestLength="whatever value you need in kb max value is 2,147,483,647 kb" relaxedUrlToFileSystemMapping="true" />

在system.web部分的下,默认为4 mb大小限制

Details here

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50728994

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档