Загрузите файл размером 1 ГБ с веб-страницы в ASP.NET
Всем Привет,
Мне нужно разработать веб-страницу, на которую пользователь будет загружать большие файлы, скажем, от 600 МБ до 2 ГБ.
Кроме того, дайте мне знать, какие факторы, такие как пропускная способность и т.д., могут повлиять на скорость загрузки файлов.
Что я уже пробовал:
В настоящее время я использую обычный контроль загрузки файлов для небольших файлов.
Я проверил с помощью этого фрагмента кода
Глаг.Aspx-файл
<%@ Page Language="VB" AutoEventWireup="false" CodeFile="VB.aspx.vb" Inherits="VB" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head id="Head1" runat="server"> <title></title> <style type="text/css"> body { font-family: Arial; font-size: 10pt; } </style> </head> <body> <form id="form1" runat="server"> Select File :- <input type="file" name="postedFile" /> <input type="button" id="btnUpload" value="Upload" /> <br /> <br /> <progress id="fileProgress" style="display: none"></progress> <hr /> <span id="lblMessage" style="color: Green"></span> <script type="text/javascript" src="jquery.min-1.8.3.js"></script> <script type="text/javascript"> $("body").on("click", "#btnUpload", function () { $.ajax({ url: 'HandlerVB.ashx', type: 'POST', data: new FormData($('form')[0]), cache: false, contentType: false, processData: false, success: function (file) { $("#fileProgress").hide(); $("#lblMessage").html("" + file.name + " has been uploaded."); }, xhr: function () { var fileXhr = $.ajaxSettings.xhr(); if (fileXhr.upload) { $("progress").show(); fileXhr.upload.addEventListener("progress", function (e) { if (e.lengthComputable) { $("#fileProgress").attr({ value: e.loaded, max: e.total }); } }, false); } return fileXhr; } }); }); </script> </form> </body> </html>
С ниже обработчик
HandlerVB.данного
<%@ WebHandler Language="VB" Class="HandlerVB" %> Imports System Imports System.IO Imports System.Net Imports System.Web Imports System.Web.Script.Serialization Public Class HandlerVB : Implements IHttpHandler Public Sub ProcessRequest(ByVal context As HttpContext) Implements IHttpHandler.ProcessRequest 'Check if Request is to Upload the File. If context.Request.Files.Count > 0 Then 'Fetch the Uploaded File. Dim postedFile As HttpPostedFile = context.Request.Files(0) 'Set the Folder Path. 'Dim folderPath As String = context.Server.MapPath("~/Uploads/") 'Set the File Name. Dim fileName As String = Path.GetFileName(postedFile.FileName) 'Save the File in Folder. postedFile.SaveAs(folderPath + fileName) 'Send File details in a JSON Response. Dim json As String = New JavaScriptSerializer().Serialize(New With { .name = fileName }) context.Response.StatusCode = CInt(HttpStatusCode.OK) context.Response.ContentType = "text/json" context.Response.Write(json) context.Response.End() End If End Sub Public ReadOnly Property IsReusable() As Boolean Implements IHttpHandler.IsReusable Get Return False End Get End Property End Class
Когда я загружаю файл размером 100 МБ в свою сеть, загрузка занимает 4 минуты, а загрузка из внешней сети-примерно 7 минут. Однако всякий раз, когда загружается файл размером 600 Мб или более, он не загружается.
Веб.конфиг
<configuration> <system.web> <httpRuntime maxRequestLength="2147483647" executionTimeout="3600" enableVersionHeader="false" /> <compilation debug="true" targetFramework="4.0" /> </system.web> <system.webServer> <security> <requestFiltering> <requestLimits maxAllowedContentLength="2147483647" /> </requestFiltering> </security> </system.webServer> </configuration>
пожалуйста, помогите, как решить эту проблему или любым другим способом ее достичь.
OriginalGriff
И что же?
В чем же проблема?
А что вы пробовали?
Где ты застрял?
Какая помощь вам нужна?
Используйте виджет "улучшить вопрос", чтобы отредактировать свой вопрос и предоставить более подробную информацию.
Magic Wonder
Сделано. Пожалуйста предложите