如何在浏览器的进度条中显示FTPWebRequest文件上传的进度?
在我的Blueimp MVC4应用程序中,我实现了Blueimp文件上传示例的.Net示例,如下所示:
http://www.webtrendset.com/2011/06/22/complete-code-example-for-using-blueimp-jquery-file-upload-control-in-asp-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);
}
}我有意省略了上面代码示例的一部分。
发布于 2013-09-28 13:18:33
http://tim.mackey.ie/FtpWebRequestWithProgressBarCFtp.aspx
请看上面的链接。它会给你答案
发布于 2014-09-08 22:58:04
听起来您至少已经解决了MVC应用程序的FtpWebRequest中涉及的大部分问题。请回答两个简短的问题。您的实现是否支持上传非常大的文件?(我正在编写我的第一个MVC应用程序,它需要通过FTP将非常大的文件(从500MB到近6 6GB)上传到与MVC应用程序位于同一虚拟机上的FileZilla FTP服务器)。
如果是这样,您是否会考虑发布一个下载链接,指向在视图中使用的代码、它的控制器和修改后的handler.ashx,以及连接处理程序所需的内容?
我已经找到了很多非web应用的例子和一些老式的服务器端ASP.Net应用的例子,但是没有一个MVC可以通过需要IIS缓冲整个文件的技术来克服2 2GB的上传限制。
谢谢!-Bob
https://stackoverflow.com/questions/19062815
复制相似问题