如何在浏览器的进度条中显示FTPWebRequest文件uplaod的进度?
在我的c#MVC 4应用程序中,我已经实现了Blueimp文件上传示例的.Net示例:
此上传使用jquery.fileupload-ui.js插件。
我修改了MVC应用程序中的handler.ashx,使用FTPWebRequest将文件上传到FTP服务器。
当我开始上传文件但进度指示器无法准确显示进度状态时,进度条会起作用
浏览器中的进度条始终表示在FTPWebRequest开始之前已经以浏览器方式完成了进度。
我的处理程序看起来像这样
public class Handler1 : IHttpHandler
{
public void ProcessRequest(HttpContext context)
{
try
{
context.Response.ContentType = "text/plain"; //"application/json";
HttpContext postedContext = HttpContext.Current;
var r = new System.Collections.Generic.List<ViewDataUploadFilesResult>();
var js = new JavaScriptSerializer();
foreach (string file in context.Request.Files)
{
var hpf = context.Request.Files[file] as HttpPostedFile;
uplaodFiles(hpf,pid, id);
private UploadState uplaodFiles(HttpPostedFile file,Guid pid, string id)
{
FtpWebRequest request = (FtpWebRequest)WebRequest.Create(url);
request.Method = WebRequestMethods.Ftp.UploadFile;
request.Timeout = 3600000;
request.Credentials = new NetworkCredential(ftpuser, ftpassword);
byte[] fileData = null;
using (Stream input = file.InputStream)
{
using (Stream output = request.GetRequestStream())
{
input.CopyTo(output);
}
}
我故意省略了上面代码示例的部分内容
答案 0 :(得分:0)
http://tim.mackey.ie/FtpWebRequestWithProgressBarCFtp.aspx
看看上面的链接。它给出了答案
答案 1 :(得分:0)
听起来你至少已经解决了FtpWebRequest中涉及MVC应用程序的大部分问题。请两个简单的问题。您的实现是否支持上传非常大的文件? (我正在编写我的第一个MVC应用程序,需要通过FTP将非常大的文件(从500MB到近6GB)上传到与MVC UI应用程序共同位于同一VM上的FileZilla FTP服务器。
如果是,您是否会考虑在您的视图,控制器和修订后的handler.ashx中使用下载链接到您正在使用的代码以及连接处理程序所需的内容?
我发现大量的非网络应用程序示例和一些用于旧式服务器端ASP.Net应用程序的示例,但是对于MVC来说都没有,它们可以通过需要的技术克服上传的2GB限制IIS缓冲整个文件。
谢谢! -Bob