[英]How can I show the progress of a FTPWebRequest file upload in a progress bar in a browser?
如何在浏览器的进度栏中显示FTPWebRequest文件的进度?
在我的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);
}
}
我故意省略了上面代码示例的部分
听起来您至少已经解决了MVC应用程序的FtpWebRequest中涉及的大多数问题。 请回答两个问题。 您的实施是否支持上传非常大的文件? (我正在编写我的第一个MVC应用程序,该应用程序需要通过FTP上传非常大的文件(从500MB到近6GB)到与MVC UI应用程序位于同一虚拟机上的FileZilla FTP服务器)。
如果是这样,您是否考虑发布一个下载链接,指向您在视图,其控制器和修订后的handler.ashx中使用的代码,以及连接处理程序的必要条件?
我已经找到了很多非Web应用程序的示例,还有一些针对老式服务器端ASP.Net应用程序的示例,但是对于MVC来说根本没有,可以使用要求整个IIS缓冲的技术来克服2GB的上传限制文件。
谢谢! -鲍勃
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.