Quando estamos trabalhando em projetos da Web, geralmente precisamos usar a função de fazer upload de arquivos, mas o upload de vários tipos de arquivos em um ambiente de aplicativo baseado em navegador/servidor sempre tem usuários problemáticos. Então, qual é o método do ASP para fazer upload de arquivos?
um. Análise do princípio da implementação do upload de arquivos com base no ASP
O princípio básico é: use o método BinaryRead do objeto ADO Stream para ler todos os dados no formulário, interceptar os dados de arquivo necessários e salvá -los em arquivos binários.
Aqui está um exemplo da página do arquivo de upload (upload.htm):
< html >< corpo >< name de formulário = "upload" método = "post" Enctype = "Multipart/form-data" action = "upload.asp"> < type de entrada = "arquivo" name = "filename"> < type de entrada = "submit" value = "upload"> </td> </form>
O objeto de arquivo é usado no programa, para que os dados originais lidos usando o método BinaryRead no upload.asp não sejam apenas os dados do próprio arquivo selecionado, mas também contém descrições do caminho, tipo, nome do domínio da página de envio e outras informações relacionadas no disco rígido do usuário. Dessa forma, precisamos extrair o conteúdo específico do arquivo dele. De acordo com a análise, a linha divisória entre as informações do cabeçalho dos dados e os dados são dois pares de quebras de linha de retorno do carro, e também há informações separadas no final. Podemos usar um método semelhante para obter dados de arquivo.
Dim FormData.FormSize, DataStart, CLSTR, DivStrFormSize = request.TotalBytesFormData = request.binaryRead (formSize) clstr = Chrb (13) e Chrb (10) DataStart = Instrb (formData. Divstr = LeftB (formData, Instrb (formData, clstr) -1) DATASIZE = Instrb (DataStart+1, FormData, Divstr) -Datatart-2FormData = MIDB (FormData, DataStart, DataSize) FormData é o conteúdo do arquivo.
O tratamento correspondente pode ser realizado conforme necessário no meio. O trabalho final é salvar o arquivo. Existem duas maneiras de salvar: uma é usar métodos de operação de arquivo binário em programas como VB ou VC, adicionar bibliotecas de tipos apropriadas ao projeto e, finalmente, compilá -lo em um arquivo DLL e registrar o arquivo DLL ao usá -lo. O programa de armazenamento de arquivos é o seguinte:
Função pública savefile (pathname como string) como string dim objContext como objectContext dim objRequest como solicitação definido objContext = getObjectContext () set objRequest = objContext ("request") A seguinte parte do código é uma operação relacionada para armazenamento de arquivo Dim, como longa data () como, por mais, cloTer, Div Data DiSTr Dim Dimt Data Dim. DataSize=objRequest.TotalBytes Redim FormData(DataSize-1) FormData=objRequest.BinaryRead(DataSize) CLStr=ChrB(13) & ChrB(10) DataStart=InStrB(FormData,CLStr & CLStr)+4 DivStr=LeftB(FormData,InStrB(FormData,CLStr)-1) DataSize = Instrb (DataStart+1, FormData, Divstr) -DataStart-2 FormData = MIDB (FormData, DataStart, DataSize) 'Crie um arquivo binário e escreva o FormData para abrir o PathName para Binário como 1 Put #1,, FormData Close #1 SalveFile = "Ok!" Função finalO segundo método é usar o método de operação de arquivo binário fornecido no fluxo ADO para concluí -lo. A instrução para salvar o arquivo é: streamobj.savetofile (nome do arquivo, 2). Nesse tipo de operação, podemos armazenar as operações relevantes em um arquivo de classe. Ao se inscrever, basta incluir o arquivo de classe no programa ASP. Para métodos específicos de processamento, consulte a introdução relevante.
dois. Exemplo de método de implementação de upload de arquivo
Para implementar uploads de arquivos, você pode usar componentes ou métodos livres de componentes. Para classes de componentes, como o aceitador de postagem da Microsoft (MPA para curta), é um componente de servidor gratuito lançado pela Microsoft. A instalação de tais componentes também é mais conveniente. Para o MPA da Microsoft, basta executar seus arquivos de instalação. Para o formulário de componente DLL em geral, precisamos nos registrar. Por exemplo, para usar aspcnup.dll, basta executar o regsvr32 [path/] aspcnup.dll na janela 2000, e o sistema solicita que o registro seja bem -sucedido, você pode usar esse componente; Para a classe sem componente, ao usá -la, basta incluir as seguintes declarações no manipulador:
<!-#incluir file = "upload.inc"-> configurar upload = new upload_5xsoft 'Criar objeto de upload
Para propriedades e métodos de operação, consulte o manual do usuário deste componente.
A seguir, o código -fonte (upload.asp) para fazer upload de alguns tipos de arquivos usando o componente aspcnup.dll como exemplo:
<% @ language="vbscript" Set fileUP=Server.CreateObject("aspcn.Upload") fileUP.Maxsize=200000 fileUP.Path="d:/upfile" fileUP.Upload For i=0 to fileUP.Count fieldname=fileUP.FieldName(i) If fileUP.FileType(fieldname)="zip" Or iLeup.FileType (FieldName) = "rar" Then FileUp.Save FieldName End Se a próxima definir fileUp = nada%>O modelo de aplicativo do navegador/servidor ainda está se desenvolvendo rapidamente. Na recém-lançada asp.net da Microsoft, a função de upload de arquivos foi interna, tornando muito simples e conveniente usar. Como uma nova tecnologia, o ASP.NET não é apenas uma atualização simples do ASP. É uma nova estrutura para o desenvolvimento da Web, que contém muitos novos recursos. O ASP.NET fornece um código de estrutura mais fácil de escrever e mais claro, e poderemos reutilizar e compartilhar mais facilmente, desenvolvendo programas mais práticos.
O exposto acima é todo o conteúdo deste artigo. Espero que o conteúdo deste artigo seja de ajuda para estudar ou trabalhar de todos. Eu também espero apoiar o novo canal de tecnologia errada!