Fazer arquivos do navegador é uma maneira simples de passar arquivos dos clientes para o servidor. A partir da terceira geração do navegador Netscape e Microsoft, a maioria dos navegadores pode fazer upload de arquivos do servidor sem a necessidade de fornecer aos usuários métodos ou software de acesso especial.
Alguns componentes ASP são projetados para arquivos, por exemplo ::
Publicação aceitadora
(Parte do Microsoft Siteserver),
AspsmartUpload (vantagens),
aspupload (persistsoftware),
Artesãos SA-FileUpSoftware)
O início deste artigo informará informações sobre a criação desses componentes, e esses componentes geralmente usam VB, C ++ ou Java.
O problema desses componentes é que eles fazem parte de produtos de terceiros em vez de ASP padrão. Como um componente de terceira partia, a instalação deve ser instalada no servidor. Isso significa que a DLL deve ser copiada e registrada no servidor. A maioria dos sistemas de hospedagem não tem permissão para executar essas configurações em seus servidores, porque os problemas de configuração (especialmente hosts virtuais) podem ocorrer. A segunda desvantagem é que a maioria deles não é gratuita.
Portanto, preciso escrever o código VBScript para resolver o problema de fazer upload do arquivo. Esta não é uma opção inevitável, porque o VBScript é uma linguagem de script, que só pode usar o tipo de dados das variantes e não pode fornecer muitas funções construídas --in para gerenciar dados binários e matriz de bytes.
Para entender o processo de upload, devemos primeiro saber que os dados são enviados do navegador para o servidor com o protocolo HTTP. Isso significa que o envio do formulário de "Multipart/Form-Data" (multi-partes/dados de formato) é enviado.
Formulário de upload
Em circunstâncias normais, use o formulário HTML para passar dados do navegador para o servidor. Este formulário pode conter domínios de texto, caixas de inspeção, botões e controle de tipo de arquivo dos arquivos carregados. O usuário preenche e envia esta tabela para o servidor com seus próprios dados.
O atributo Enableype no elemento da tabela especifica o tipo de conteúdo codificado pelo conjunto de dados da tabela codificado no servidor. O valor padrão do atributo ENCTYPE é "Application/X-Www-Form-Form-Urlencoded", mas ao transmitir uma grande quantidade de texto ao servidor, incluindo dados com caracteres não-ASCII ou números binários, esse tipo padrão não pode ser competente. No momento, o tipo de conteúdo "Multipart/Form-Data" deve ser usado quando o arquivo enviar o formulário.
Uma informação "Multipart/Form-Data" contém uma série de componentes.
Uma cabeça de disposição de conteúdo, o valor de "formulário-dados";
Para um controle de tipo de arquivo, uma parte pode conter mais informações:
Os atributos do nome do arquivo (nome do arquivo) do caminho original e do arquivo são estipulados no cliente;
Siga o conteúdo binário de controle ou texto por trás dessas cabeças.
O exemplo a seguir ilustra a codificação de "Multipart/Form-Data".
Se este formulário for enviado, você poderá ler estas solicitações no servidor:
----------------------------- 7CF87224D2020A
Disposição de conteúdo: Form-Data; Nome = "Email"
[Email protegido]
----------------------------- 7CF87224D2020A
Disposição de conteúdo: Form-Data;
Tipo de conteúdo: imagem/pjpeg
----------------------------- 7CF87224D2020A
Disposição de conteúdo: Form-Data; Nome = "Enter"
Envie consulta
----------------------------- 7CF87224D2020A--
Quando esse conteúdo é transmitido como uma resposta ao cliente, ele será exibido. Request.BinaryRead e Response.BinaryWrite Método Leia e grava dados binários.
< / Percentual
Response.BinaryWrite (request.binaryRead (request.totalbytes))
%>
Você pode ver a divisão de cada parte da resposta:
----------------------------- 7CF87224D2020A
A última linha de limite segue ' -'.
Cada controle tem uma disposição de conteúdo. O reconhecimento de atributo de nome é controlado pela tabela HTML (email, blob e enter. Para um controle de tipo de arquivo (BLOB),
O nome do arquivo também faz parte do cabeçalho da disposição da cabeça e o cabeçalho do tipo conteúdo fornece o tipo de conteúdo de dados binários.
Script enviado
Todos os conteúdos acima devem estar vinculados. Isso é muito óbvio em VB ou C ++, porque existem muitos objetos e métodos para isso. No VBScript, algumas funções fornecidas pelo idioma devem ser usadas e o problema da sequência variável codificada por duplo por byte usada no VBScript deve ser resolvida.
Função VBScript
Os dados originais são um formato binário; portanto, a função VBScript projetada para gerenciar dados binários deve ser usada. Porque consideramos os dados originais como uma série de funções de bytes, MIDB, Instrb e LenB são úteis. Mas evite a string clássica do VBScript, porque eles são string codificada por dupla porceta, que não é adequada para se decompor em bytes únicos.
Essas são as únicas funções usadas para decompor bytes na função VBScript. Também é necessário um método para obter uma string codificada com dupla porte a partir dos dados decompostos, para que você possa usar a sequência na codificação VBScript. Para usar a string como uma variável independente no Instrb, é necessária uma função para converter a sequência dupla -byte em uma única string -byte.
Para mim, escrevi duas funções, Gettring () e GetByTestring () e depois expliquei mais tarde.
estrutura
Os dados decompostos são armazenados no objeto Dicionário VBScript. O objeto de dicionário é o objeto de tabela de hash, que armazena (chave, item). Faz parte do VBScript e ASP2.0.
Defina o primeiro objeto de dicionário "UploadRequest". Este objeto contém todos os controles enviados pela tabela de upload. Key é o controle do controle, e o item é a informação de controle contida no objeto:
"ControlName1", Dictionary Control1
"ControlName2", Dictionary Control2
Representando um objeto de dicionário controlado contém o seguinte par (chave, item):
"Valor", string ou conteúdo binário
"Nome do arquivo", nome do arquivo carregado
"ContentType", contentType de arquivo carregado
Combinando estes, existem os seguintes exemplos:
uploadRequest: "email", uploadcontrol 1: "valor", [email protegido]
"BLOB", UPLOPLONTROL 2: "Nome do arquivo", c: /upload/200902/file.gif "contentType":
Imagem/gif "valor": gif89ai?
Este objeto é muito útil para acesso futuro e dados de uso.
discriminação
Aqui está o código para controle de decomposição, leitura e upload de registros. Esse processo é concluído com o programa "BuildUploadRequest".
Sub BuildUploadRequest (requestbin)
Primeiro de tudo, você deve encontrar a linha divisória.
'Obtenha o limite posbeg = 1 PosEnd = Instrb
bou
|||