Después de leer todas las publicaciones sobre cómo cargar archivos grandes en csdn, escribí esta basura. (:-))
Hay varias formas de cargar archivos grandes:
1. El método HttpWorkerRequest de Sigui es demasiado difícil de entender:-(
2. ¡Utilice el control de terceros AspNetUpload para solicitar dinero! ! Olvídalo, todavía nos gusta lo gratis.
3. Modifique el archivo web.config, pero no puede detectar errores.
4. Subir vía ftp. El servidor debe proporcionar servicio ftp.
No nos queda más remedio que elegir la tercera vía. ¡Quién nos vuelve tan estúpidos! (Es demasiado estúpido. No importa. Deberías comer más pescado. Escuché que comer pescado puede hacerte más inteligente.)
¡Entonces estudia detenidamente el tercer método!
Modificar el archivo Webcong:
<sistema.web>
<httpTiempo de ejecución maxRequestLength="40690"
useFullyQualifiedRedirectUrl="verdadero"
tiempo de ejecución="6000"
useFullyQualifiedRedirectUrl="falso"
minFreeThreads="8"
minLocalRequestFreeThreads="4"
appRequestQueueLimit="100"
enableVersionHeader="verdadero"
/>
</system.web>
Entre ellos, los más relacionados con la carga son:
longitud máxima de solicitud
Indica el tamaño máximo de carga de archivos admitido por ASP.NET.
Este límite se puede utilizar para evitar ataques de denegación de servicio causados por usuarios que pasan una gran cantidad de archivos al servidor.
El tamaño especificado está en KB.
El valor predeterminado es 4096 KB (4 MB).
tiempo de espera de ejecución
Indica el número máximo de segundos que se permite ejecutar una solicitud antes de que ASP.NET la cierre automáticamente.
La unidad es segundos. Configúrelo en un valor mayor al cargar archivos grandes.
Si la memoria del servidor es de 512 M, se pueden cargar archivos de 160 M. (No lo he probado. Esta es la opinión unánime de muchas publicaciones en csdn).
'www.downcodes.com
En este punto, la configuración de web.config ha finalizado.
Sin embargo, una vez que el tamaño del archivo cargado exceda el rango de tamaño de archivo establecido, se producirá el siguiente error:
La página no se puede mostrar. La página que desea ver no está disponible actualmente. Es posible que el sitio web esté experimentando dificultades técnicas o que necesite ajustar la configuración de su navegador.
Aunque no se puede resolver, ¡todavía tenemos que detectar este error! ¿Qué hacer?
Recientemente comí algunos peces y lo pensé. Dado que este error es un error de primer plano causado por el control de archivos, no es factible utilizar try...catch para capturarlo en segundo plano.
Entonces pensé en usar el mecanismo de página de captura de errores de .NET para manejarlo. Es factible.
1. Primero configure web.config
<modo de errores personalizados="Activado"/>
2. Cree un nuevo archivo error.aspx específicamente para detectar errores.
3. Agregue la directiva de página a la página principal de la página aspx donde se carga el archivo. ErrorPage="UploadError.aspx"
4. Agregue algo de código a error.aspx para determinar si el mensaje de error es un error de primer plano causado por el archivo.
clase pública UploadError: System.Web.UI.Page
{
Page_Load vacío privado (remitente del objeto, System.EventArgs e)
{
Excepción ex = Server.GetLastError();
si (ej! = nulo)
{
Respuesta.Redirect("../error.aspx");
}
else //El error de primer plano ex es un valor nulo
{
Response.Redirect("uploadexcel.aspx?err=1"); //Vuelva a la página de carga y agregue el parámetro err para mostrar el mensaje de error
}
}
5. Mostrar mensaje de error.
uploadexcel de clase pública: System.Web.UI.Page
{
Page_Load vacío privado (remitente del objeto, System.EventArgs e)
{
si (Solicitud["err"] == "1")
{
Page.RegisterStartupScript("budget","<script language = javascript>alert('¡Error al cargar el archivo! ¡El tamaño del archivo es demasiado grande!')</script>");
}
}
}
6. Hazlo y termina el día. (Este pez no es gratuito).
Después de la modificación anterior, la carga ahora indica que el programa especifica el tamaño del archivo. Si lo excede, aparecerá un mensaje de error.
De esta forma será mucho mejor. Al menos puedo aceptarlo y no será demasiado difícil de explicar a los usuarios.