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.