Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

carlosleitao

Upload

Recommended Posts

Já peguei aqui no próprio Imasters, um código, pra fazer Upload de arquivos, sem instalar componentes no servidor...O problema é que com esse código, só consigo fazer upload de um arquivo de cada vez...Alguém sabe como consigo fazer isso com vários arquivos...O código segue abaixo...' Ajuste o timeout conforme o tamanho ' dos arquivos que você irá aceitarserver.scripttimeout = 5400'Caminho virtual onde os arquivos devem ser salvos no servidorfilePathDefault = "../imagens/foto/noticias/"const ForWriting = 2const TristateTrue = -1crlf = chr(13) & chr(10)' Esta função recupera o nome do campo do formuláriofunction getFieldName( infoStr) sPos = inStr( infoStr, "name=") endPos = inStr( sPos + 6, infoStr, chr(34) & ";") if endPos = 0 then endPos = inStr( sPos + 6, infoStr, chr(34)) end if getFieldName = mid( infoStr, sPos + 6, endPos - (sPos + 6))end function' Esta função recupera o nome do arquivofunction getFileName( infoStr) sPos = inStr( infoStr, "filename=") endPos = inStr( infoStr, chr(34) & crlf) getFileName = mid( infoStr, sPos + 10, endPos - (sPos + 10))end function' Esta função recupera o tipo mime do arquivofunction getFileType( infoStr) sPos = inStr( infoStr, "Content-Type: ") getFileType = mid( infoStr, sPos + 14)end function' Lê o arquivo o arquivo e tudo mais que foi enviadopostData = ""Dim biDatabiData = Request.BinaryRead(Request.TotalBytes)' Como o arquivo é binário, iremos armazená-lo' numa variável mais controlávelfor nIndex = 1 to LenB( biData) postData = postData & Chr(AscB(MidB( biData, nIndex, 1)))next' Como os dados foram lidos de uma forma binária (BinaryRead), a instrução Request.Form ' não está mais disponível. Portanto, será necessário processar as variáveis manualmente.' Primeiro, será verificado o tipo de codificação.contentType = Request.ServerVariables( "HTTP_CONTENT_TYPE")ctArray = split( contentType, ";")' O envio de arquivos somente funciona com a codificação' "multipart/form-data", por isso vamos checar se esse foi a codificação usada.if trim(ctArray(0)) = "multipart/form-data" then errMsg = "" ' Armazene o conteúdo do formulário ... bArray = split( trim( ctArray(1)), "=") boundry = trim( bArray(1)) ' ... divida as variáveis formData = split( postData, boundry) ' agora, nós precisamos extrair a informação de cada variável. dim myRequest, myRequestFiles(9, 3) Set myRequest = CreateObject("Scripting.Dictionary") fileCount = 0 for x = 0 to ubound( formData) ' duas marcas "crlf" indicam o final da informação sobre campo ' tudo depois dele é o valor infoEnd = instr( formData(x), crlf & crlf) if infoEnd > 0 then ' lê as informações do campo... varInfo = mid( formData(x), 3, infoEnd - 3) ' lê o valor do campo varValue = mid( formData(x), infoEnd + 4, len(formData(x)) - infoEnd - 7) ' verifica se ele é um arquivo if (instr( varInfo, "filename=") > 0) then myRequestFiles( fileCount, 0) = getFieldName( varInfo) myRequestFiles( fileCount, 1) = varValue myRequestFiles( fileCount, 2) = getFileName( varInfo) myRequestFiles( fileCount, 3) = getFileType( varInfo) fileCount = fileCount + 1 else ' outro tipo de campo myRequest.add getFieldName( varInfo), varValue end if end if nextelse errMsg = "Tipo de codificação inválido!"end if ' Salva o arquivo enviadoset lf = server.createObject( "Scripting.FileSystemObject")if myRequest("filename") = "original" then ' Usa o nome do arquivo original browserType = UCase( Request.ServerVariables( "HTTP_USER_AGENT")) if (inStr(browserType, "WIN") > 0) then ' Sistema Windows sPos = inStrRev( myRequestFiles( 0, 2), "\") fName = mid( myRequestFiles( 0, 2), sPos + 1) end if ' Sistema Mac if (inStr(browserType, "MAC") > 0) then fName = myRequestFiles(0, 2) end if ' Caminho onde os arquivos devem ser salvos filePath = filePathDefault & fNameelse ' use o nome especificado pelo usuário ' Caminho do arquivo filePath = filePathDefault & myRequest("userSpecifiedName")end ifsavePath = server.mapPath( filePath)set saveFile = lf.createtextfile(savePath, true)saveFile.write( myRequestFiles(0, 1))saveFile.closenome = fnameObrigado...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Karo colega pra você fazer upload de multiplos arquivo você tem q usar um componente, esse codigo q você pegou ele faz a vez do componente, mas nao é 100% faz com o que processador da maquina trabalhe muito e o processo se torna lento... Eu tenho varios com componentes e que mandam o caminho do arquivo pro banco de dados, que é melhor pra futuras utilizações... Para mandar um arquivo pra uma pasta isso é o de menos isso você pode fazer simplesmente com um insert ou update....Qual coisa estamos ai pra esclarecer mais....

Compartilhar este post


Link para o post
Compartilhar em outros sites

Obrigado pelo toque em relação aos componetes...Na verdade também tenho alguns, o problema é o provedor q estou usando, parece ter medo de instalar este tipo de coisa...Acredito ser um pouco de falta de profissionalismo por parte deles...E por isso é q precisava fazer isso sem o uso de componentes...Se alguém tiver a solução mágica q estou procurando, favor postar, pois acho q muitos colegas do Imasters ficariam agradecidos...T+

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.