igor.damiano Posted October 23, 2003 Report Share Posted October 23, 2003 Alguém tem algum script de upload que não usa componentes, grava no Banco de Dados e que define o tamanho e o tipo de arquivo ????Se puderem me arrumar agradeço...Valeu Quote Link to comment Share on other sites More sharing options...
0 Decio Posted October 23, 2003 Report Share Posted October 23, 2003 Tentei fazer uma rotina usando este código como exemplo (não sei a quem dar os créditos) , mas achei muito lento:<%' Ajuste o timeout conforme o tamanho ' dos arquivos que você irá aceitarserver.scripttimeout = 5400'Caminho virtual onde os arquivos devem ser salvos no servidorfilePathDefault = "./"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.close%><html><body><% if errMsg = "" then %> Arquivo enviado com sucesso!<%else %> Erro no envio do arquivo!<br> <%= errMsg %><% end if %></body></html> Quote Link to comment Share on other sites More sharing options...
0 MACUL Posted December 19, 2003 Report Share Posted December 19, 2003 Várias Maneiras Quote Link to comment Share on other sites More sharing options...
Question
igor.damiano
Alguém tem algum script de upload que não usa componentes, grava no Banco de Dados e que define o tamanho e o tipo de arquivo ????
Se puderem me arrumar agradeço...
Valeu
Link to comment
Share on other sites
2 answers to this question
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.