Depois de ler todas as postagens sobre upload de arquivos grandes no csdn, escrevi esse lixo. (:-))
Existem várias maneiras de fazer upload de arquivos grandes:
1. O método HttpWorkerRequest do Sigui é muito difícil de entender :-(
2. Use o controle de terceiros AspNetUpload para pedir dinheiro! ! Esqueça, ainda gostamos de graça.
3. Modifique o arquivo web.config, mas não consiga detectar erros.
4. Carregue via FTP. O servidor precisa fornecer serviço FTP.
Não temos escolha senão escolher a terceira via Que nos torna tão estúpidos! (É muito estúpido. Não importa. Você deveria comer mais peixe. Ouvi dizer que comer peixe pode torná-lo mais inteligente.)
Então estude o terceiro método com atenção!
Modifique o arquivo Webcong:
<sistema.web>
<httpRuntime maxRequestLength="40690"
useFullyQualifiedRedirectUrl="true"
execuçãoTimeout="6000"
useFullyQualifiedRedirectUrl="falso"
minFreeThreads="8"
minLocalRequestFreeThreads="4"
appRequestQueueLimit="100"
enableVersionHeader = "verdadeiro"
/>
</system.web>
Entre eles, aqueles intimamente relacionados ao upload são:
maxRequestLength
Indica o tamanho máximo de upload de arquivo compatível com ASP.NET.
Esse limite pode ser usado para evitar ataques de negação de serviço causados por usuários que passam grandes números de arquivos para o servidor.
O tamanho especificado está em KB.
O valor padrão é 4.096 KB (4 MB).
execuçãoTimeout
Indica o número máximo de segundos que uma solicitação pode ser executada antes de ser fechada automaticamente pelo ASP.NET.
A unidade é segundos. Defina um valor maior ao fazer upload de arquivos grandes.
Se a memória do servidor for 512M, arquivos de 160M poderão ser carregados. (Eu não tentei. Esta é a opinião unânime de muitos posts no csdn.)
'www.downcodes.com
Neste ponto, as configurações do web.config foram finalizadas.
No entanto, quando o tamanho do arquivo enviado exceder o intervalo de tamanho de arquivo definido, ocorrerá o seguinte erro:
A página não pode ser exibida A página que você deseja visualizar não está disponível no momento. O site pode estar enfrentando dificuldades técnicas ou pode ser necessário ajustar as configurações do navegador.
Embora não possa ser resolvido, ainda precisamos detectar esse erro! O que fazer?
Comi alguns peixes recentemente e pensei sobre isso. Como esse erro é um erro de primeiro plano causado pelo controle de arquivo, não é viável usar try...catch para capturá-lo em segundo plano.
Então pensei em usar o mecanismo de página de captura de erros do .NET para lidar com isso. É factível.
1. Configure o web.config primeiro
<customErrors mode="Ativado"/>
2. Crie um novo arquivo error.aspx especificamente para detectar erros.
3. Adicione a diretiva page à primeira página da página aspx onde o arquivo foi carregado. ErrorPage="UploadError.aspx"
4. Adicione algum código a error.aspx para determinar se a mensagem de erro é um erro de primeiro plano causado pelo arquivo.
classe pública UploadError: System.Web.UI.Page
{
private void Page_Load (remetente do objeto, System.EventArgs e)
{
Exceção ex = Server.GetLastError();
se (ex! = nulo)
{
Response.Redirect("../error.aspx");
}
else //Erro de primeiro plano ex é valor nulo
{
Response.Redirect("uploadexcel.aspx?err=1"); //Volte para a página de upload e adicione o parâmetro err para exibir a mensagem de erro
}
}
5. Exibir mensagem de erro.
uploadexcel de classe pública: System.Web.UI.Page
{
private void Page_Load (remetente do objeto, System.EventArgs e)
{
if (Solicitação["err"] == "1")
{
Page.RegisterStartupScript("budget","<script language = javascript>alert('O upload do arquivo falhou! O tamanho do arquivo é muito grande!')</script>");
}
}
}
6. Faça isso e encerre o dia. (Este peixe não é gratuito.)
Após a modificação acima, o upload agora torna-se que o programa especifica o tamanho do arquivo. Se exceder, uma mensagem de erro aparecerá.
Desta forma, será muito melhor. Pelo menos posso aceitar e não será muito difícil explicar aos usuários.