A cópia do código é a seguinte:
<input name = "file" type = "file">
formsize = request.totalbytes
formData = request.binaryRead (formsize)
Bncrlf = Chrb (13) e Chrb (10)
Divider = LeftB (FormData, Clng (Instrb (FormData, Bncrlf))-1)
DataStart = Instrb (FormData, Bncrlf & Bncrlf) +4
DataEND = Instrb (DataStart+1, FormData, divisor) -datastart
mydata = midb (formData, dataStart, DataAnd)
formsize = request.totalbytes
Obtenha o número máximo de bytes enviados
--------------------------------------------------------------------------------------------------------------------------------------------------
formData = request.binaryRead (formsize)
Obtenha dados de formulário de fluxo binário
--------------------------------------------------------------------------------------------------------------------------------------------------
Bncrlf = Chrb (13) e Chrb (10)
Definir CRLF Enter a variável do código de interrupção da linha
--------------------------------
Divider = LeftB (FormData, Clng (Instrb (FormData, Bncrlf))-1)
Obtenha os dados de bytes à esquerda do primeiro CRLF
A máquina Instrb (FormData, Bncrlf) -1 verifica se o valor do bit do byte binário do CRLF é reduzido por um, ou seja, os dados binários antes da informação do bit sinalizador. Deve -se notar que o Instrb retorna clng, então adicionar um clng aqui é desnecessário
--------------------------------
DataStart = Instrb (FormData, Bncrlf & Bncrlf) +4
Obtenha os dados da imagem e remova a posição inicial das informações do cabeçalho adicionadas pelo formulário, ou seja, a posição inicial dos bytes dos dados de arquivo real após o envio do formulário pelo seu tipo = arquivo
A posição de dois CRLFs consecutivos +4 (ou seja, o comprimento de um CRLFG)
---------------------------------
DataEND = Instrb (DataStart+1, FormData, divisor) -datastart
A posição de dados +1 obtida do acima é usada como o valor calculado de referência para verificar o final dos dados. A detecção de posição começa no DataStart+1 retorna a posição da primeira informação do cabeçalho do separador de formulário binário e subtraia a posição relativa do DataStar
--------------------------------------------------------------------------------------------------------------------------------------------------
mydata = midb (formData, dataStart, DataAnd)
midb () leva os dados de bits de extremidade das estrelas dos dados do arquivo de upload obtidos por muitas reviravoltas acima
OK ---------------> agora extraia de maneira limpa os dados secundários enviados
Observação:
(1). Todas as funções VB da série *B são processadas por bytes e devem ser usadas para lidar com sistemas secundários.
(2) Depois que os dados do formulário do tipo = arquivo e tipo de formulário correspondentes forem enviados, as informações do cabeçalho correspondentes são anexadas a cada campo de arquivo.
Portanto, o algoritmo acima deve ser usado para encontrar claramente os dados de arquivo reais
(3). Ao mesmo tempo, as informações do cabeçalho também contêm dados que estão enviando o nome do arquivo inicial, como c: /aa/aaa.jpg. Os dados do FormData podem ser processados o primeiro nome do arquivo de teste dos dados do domínio do arquivo do segmento.
(4). Esses algoritmos são derivados dos dados de formato fornecidos pela especificação "formulário" HTTP; portanto, qualquer algoritmo de processamento é semelhante!