繁体   English   中英

如何在浏览器的进度栏中显示FTPWebRequest文件上传的进度?

[英]How can I show the progress of a FTPWebRequest file upload in a progress bar in a browser?

如何在浏览器的进度栏中显示FTPWebRequest文件的进度?

在我的c#MVC 4应用程序中,我实现了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);
                    }
                }

我故意省略了上面代码示例的部分

http://tim.mackey.ie/FtpWebRequestWithProgressBarCFtp.aspx

看上面的链接。 它给你答案

听起来您至少已经解决了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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM