Jump to content


Photo

Upload Sem Componente


  • Faça o login para participar
3 replies to this topic

#1 knoxville

knoxville

    Backdoor Man

  • Usuários
  • 951 posts
  • Sexo:Masculino
  • Localidade:Itajaí - SC

Posted 29/05/2004, 20:13

eu peguei esse code pronto em um artigo, dei umas alteradas mas ainda não tá funcionando.... dá esse erro:

Tipo de erro:
Erro de tempo de execução do Microsoft VBScript (0x800A01A8)
Objeto necessário: '3'
/f4e/upload.asp, line 6

coloquei em vermelho a linha que dá o erro pra alguem que possa me ajudar achar mais facil...

form.asp

<html>
<head>
<title>Upload de Arquivos com ASP!</title>
</head>
<body>
<form action="upload.asp" enctype="multipart/form-data" method="post">
Escolha um arquivo para o upload:<br>
<input type="file" name="x" size="50">
<br>
<input type="submit" value="Enviar">
</form>
</body>
</html>

upload.asp

<!--#include file="zzz.asp"-->
<%
Dim x
Set x = New cla_upload
x.ProcessaUpload()
x.SalvarArquivos()
set x=nothing
Response.Write "<br>AEEEEEEEEEEEEEEEE!"
%>

zzz.asp

<%
Class cla_upload
Dim myRequest,myRequestFiles,tmpRequestFiles
dim crlf
Dim bJaProcessou
Public property get Variaveis(sVariavel)
on error resume next
if bJaProcessou then
Variaveis=myRequest(sVariavel)
end if
end property
Public Sub ProcessaUpload()
if bJaProcessou then
'erro
exit sub
end if
'Altera o tempo de processamento para arquivos grandes
Server.ScriptTimeout = 5400
Const ForWriting = 2
Const TristateTrue = -1
'Recupera os dados postados na forma binária
PostData = ""
Dim biData
biData = Request.BinaryRead(Request.TotalBytes)
'Transforma os dados da forma binária para algo mais legível
For nIndex = 1 to LenB(biData)
PostData = PostData & Chr(AscB(MidB(biData,nIndex,1)))
Next
'Recupera o content type para determinar o encoding dos dados
ContentType = Request.ServerVariables("HTTP_CONTENT_TYPE")
ctArray = Split(ContentType, ";")
'Se o encoding for
'"multipart/form-data", então foi feito upload, damos sequencia ao processamento
If Trim(ctArray(0)) = "multipart/form-data" Then
ErrMsg = ""
' Obtem o boundery, o separador de variáveis utilizado na transmissão
bArray = Split(Trim(ctArray(1)), "=")
Boundary = Trim(bArray(1))
'Usa o Boundary para separar todas as variáveis
FormData = Split(PostData, Boundary)
'Criação de 3 scripting.dictionary que guardarão as informações
Set myRequest = CreateObject("Scripting.Dictionary")
set myRequestFiles=CreateObject("Scripting.Dictionary")
FileCount = 1
For x = 0 to UBound(FormData)
set tmpRequestFiles=CreateObject("Scripting.Dictionary")
'Faz a localização de dois caracteres crlf que
'Marcam o fim dos metadados do campo e inicio dos dados propriamente
InfoEnd = InStr(FormData(x), CrLf & CrLf)
If InfoEnd > 0 Then
'Pega as informações sobre o campo
varInfo = Mid(FormData(x), 3, InfoEnd - 3)
'Pega o valor do campo, evitando os 2 crlf no inicio
'e o crlf que encontra-se no final
varValue = Mid(FormData(x), InfoEnd + 4, Len(FormData(x)) - InfoEnd - 7)
'Verifica se trata-se de um arquivo ou de uma variável qualquer
If (InStr(varInfo, "filename=") > 0) Then
'Monta um script dictionary com as informações sobre o arquivo
tmpRequestFiles.add "nome",GetFieldName(varInfo)
tmpRequestFiles.add "conteudo",varValue
tmpRequestFiles.add "filename",GetFileName(varInfo)
tmpRequestFiles.add "filetype",GetFileType(varInfo)
'Insere o script dictionary montado dentro de outro, contendo
'Todos os arquivos que levaram upload
MyRequestFiles.ADD "arq" & FileCount,tmpRequestFiles
FileCount = FileCount + 1
Else
'É um campo comum
myRequest.add GetFieldName(varInfo), varValue
End If
End If
Next
Else
ErrMsg = "Falha no Encoding Type!"
End If
bjaprocessou=true
End Sub
Sub class_Initialize
bJaprocessou=false
CrLf = Chr(13) & Chr(10)
end Sub
Public Sub SalvarArquivos()
dim icnt
icnt=1
do while icnt <= myRequestFiles.Count
set tmprequestfiles=myrequestfiles.Item("arq" & icnt)
Set lf = server.createObject("Scripting.FileSystemObject")
' para utilizar o nome do arquivo original é necessário
'determinar que tipo de client enviou o arquivo.
'clientes Macintosh enviam apenas o nome do arquivo
'sem path, enquanto clientes Windows
'enviam o caminho inteiro do arquivo selecionado
BrowserType = UCase(Request.ServerVariables( "HTTP_USER_AGENT"))
If (InStr(BrowserType, "WIN") > 0) Then
'Sendo Windows, obtem o nome do arquivo do final do path
sPos = InStrRev(tmprequestfiles("filename"), "\")
fName = Mid(tmprequestfiles("filename"), sPos + 1)
End If
If (InStr(BrowserType, "MAC") > 0) Then
'Neste caso apenas o nome do arquivo foi recebido
fName = tmprequestfiles("filename")
End If
'se fizer um upload para um caminho diferente, altere aqui
FilePath = "/imagens/" & fName
SavePath = Server.MapPath(FilePath)
Set SaveFile = lf.CreateTextFile(SavePath, True)
SaveFile.Write(tmprequestfiles("conteudo"))
SaveFile.Close
icnt=icnt+1
loop
End Sub
'Esta função recupera o nome de um campo
Private Function 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 filename de um arquivo
Private Function 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 MIME type de um arquivo
Private Function GetFileType(infoStr)
sPos = InStr(infoStr, "Content-Type: ")
GetFileType = Mid(infoStr, sPos + 14)
End Function
End Class
%>

por favor, me ajudem, mto mto obrigado! :lol: (y)

Edição feita por: knoxville, 29/05/2004, 20:15.


#2 Jhonathas.net

Jhonathas.net

    12 Horas

  • Usuários
  • 181 posts
  • Sexo:Não informado

Posted 29/05/2004, 23:04

Amigo parece que vc não fez o request dizendo que o nome do campo FILE é x entendeu, ?
Não ajunteis tesouros na terra, onde a traça e a ferrugem tudo consomem e aonde os ladrões minam e roubam;
Mas ajuntai tesouros no céu, onde nem a traça nem a ferrugem consomem, e aonde os ladrões não minam nem roubam.
MT 6 . 19

Jhonathas da Silveira de Matos (UIN: 57422166 / MSN: jhon_asp)

#3 knoxville

knoxville

    Backdoor Man

  • Usuários
  • 951 posts
  • Sexo:Masculino
  • Localidade:Itajaí - SC

Posted 29/05/2004, 23:07

sinceramente? axo q nao intendi nao! :(

#4 knoxville

knoxville

    Backdoor Man

  • Usuários
  • 951 posts
  • Sexo:Masculino
  • Localidade:Itajaí - SC

Posted 29/05/2004, 23:11

ah, talvez isso sirva pra alguma coisa (descobrir o erro):

POST Data:
erro '80020009'
Exceção.

/iisHelp/common/500-100.asp, line 223






0 user(s) are reading this topic

0 membro(s), 0 visitante(s) e 0 membros anônimo(s)

IPB Skin By Virteq