0

如何在浏览器的进度栏中显示上传 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);
                    }
                }

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

4

2 回答 2

0

听起来您至少已经解决了 MVC 应用程序的 FtpWebRequest 中涉及的大部分问题。请提两个简单的问题。您的实现是否支持上传非常大的文件?(我正在编写我的第一个 MVC 应用程序,它需要通过 FTP 将非常大的文件(从 500MB 到近 6GB)上传到与 MVC UI 应用程序位于同一 VM 上的 FileZilla FTP 服务器)。

如果是这样,您会考虑发布您在视图中使用的代码、其控制器和修改后的 handler.ashx 的下载链接,以及连接处理程序所需的内容吗?

我找到了很多非 Web 应用程序的示例和一些旧式服务器端 ASP.Net 应用程序的示例,但对于 MVC 来说根本没有一个可以克服上传的 2GB 限制的技术,这些技术需要整个 IIS 缓冲文件。

谢谢!-鲍勃

于 2014-09-08T14:58:03.660 回答
0

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

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

于 2013-09-28T05:18:32.790 回答