Ir para conteúdo

Arquivado

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

cgamb

Upload de arquivos

Recommended Posts

Olá pessoal,

Tenho uma dúvida.

Preciso criar uma página em asp clássico para fazer upload de arquivos para o servidor.

Instalei na minha máquina pessoal um programa chamado dundas upload, somente para fazer testes, porém não consigo instanciar o objeto.

Quando dou um response.write no err.description, recebo a mensagem "objeto requerido".

 

Segue meu código:

 

<%
' Baseado no exemplo da propria ASPAlliance
' Continuar se ocorrer algum erro
' Este script supoe que existe um diretorio upload dentro da pasta dados
On Error Resume Next

Dim sCaminho


'sCaminho = Replace(LCase(Server.MapPath("/")),"web","dadosupload")
sCaminho = Replace(Server.MapPath("."))

' Criar instancia do Objeto
Set objUpload = Server.CreateObject ("Dundas.Upload.2")
objUpload.UseVirtualDir = True
objUpload.UseUniqueNames = False
' Gravar arquivo no diretorio dados do proprio site
' Tambem sera gravado em memoria utilizando o metodo SaveToMemory
'
' Tamanho maximo de arquivo de 1MB
objUpload.MaxFileSize=1048576
objUpload.UseUniqueNames=FALSE
'objUpload.Save sCaminho
objUpload.Save "C:\testesite"

' Verificar se ocorreu algum erro durante a chamada.
' Se ocorrer, redirecionar para uma pagina de Erro ficticia
If Err.Number <> 0 Then
'Response.Redirect "Erro_dundasupload.asp"
response.write ERR.description
'response.write objUpload
Else
' Criar um loop para verificar os arquivos carregados
' Se for executavel, apagar do disco
' Mostrar uma caixa de diálogo com nome dos arquivos
For Each objUploadedFile in objUpload.Files
Response.Write "campo "" & objUploadedFile.TagName & "" do Formulario - Caminho : " & objUploadedFile.Path & " - Tamanho : " & CStr(objUploadedFile.Size) & " bytes"
If InStr(1,objUploadedFile.ContentType,"octet-stream") Then
Response.Write " MAS O Arquivo foi REMOVIDO por ser um tipo proibido"
objUploadedFile.Delete
End If
Next

' Mostrar o nome de cada um dos elementos do formulário
For Each objFormItem In objUpload.Form.Count
' Response.Write "
Response.Write "Item passado no formulário e´: " & objFormItem.Value

Response.Write "Chegou ao final do script Valor do ítem do formulário e´: " & objFormItem.Value

Next



End If

' Remover o objeto
Set objUpload = Nothing
%>

 

 

Caso alguém saiba alguma outra forma de fazer upload que não seja pelo dundas, aceito sugestões.

Qualquer ajuda, ficaria agradecido.

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

dá uma olhada no fórum que coloquei vários exemplos...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá,

sou novato aqui no fórum.

Você tem o link dos exemplos? O meu problema aparentemente é que o IIS não está reconhecendo o programa na hora de criar o objeto. Na verdade estou tentando fazer este teste em casa para saber se preciso instalar este programa no servidor do trabalho.

Talvez seja alguma configuração que eu não esteja sabendo fazer.

Compartilhar este post


Link para o post
Compartilhar em outros sites

ele esta gerando algum número de erro

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você tem o DUNDAS instalado no seu servidor? Você esta tentando fazer o UPLOAD pelo LOCALHOST?

 

Se for pelo LOCALHOST você tem que ter o DUNDAS instalado na sua maquina e se for no servidor onde esta HOSPEDADO o site ele tem que ter o OBJETO DUNDAS instalado.

 

Att;

Compartilhar este post


Link para o post
Compartilhar em outros sites

ou pode fazer sem componentes, também

Compartilhar este post


Link para o post
Compartilhar em outros sites

olha este exemplo sem componente

<!-- #include file = "upload_funcoes.asp" -->
<%
' Chamando Funções, que fazem o Upload funcionar
byteCount = Request.TotalBytes
RequestBin = Request.BinaryRead(byteCount)
Set UploadRequest = CreateObject("Scripting.Dictionary")
BuildUploadRequest RequestBin

' Recuperando os Dados Digitados ----------------------


' Tipo de arquivo que esta sendo enviado
tipo_foto = UploadRequest.Item("procurar").Item("ContentType")
'tipo_foto2 = UploadRequest.Item("foto").Item("ContentType")

' Caminho completo dos arquivos enviados
caminho_foto = UploadRequest.Item("procurar").Item("FileName") 
'caminho_foto2 = UploadRequest.Item("foto").Item("FileName")

' Nome dos arquivos enviados
nome_foto = Right(caminho_foto,Len(caminho_foto)-InstrRev(caminho_foto,"\")) & Session("nome")
'nome_foto2 = Right(caminho_foto2,Len(caminho_foto2)-InstrRev(caminho_foto2,"\"))


' Conteudo binario dos arquivos enviados
foto = UploadRequest.Item("procurar").Item("Value")
'foto2 = UploadRequest.Item("foto").Item("Value")

' pasta onde as imagens serao guardadas
pasta = Server.MapPath("ImagensPerfil/")
'response.Write(pasta)
nome_foto = "/"&nome_foto
'nome_foto2 = "/"&nome_foto2

' pasta + nome dos arquivos
cfoto = "ImagensPerfil" + nome_foto
'cfoto2 = "album" + nome_foto2
'cfoto = nome_foto

' Fazendo o Upload do arquivo selecionado
if foto <> "" then
Set ScriptObject = Server.CreateObject("Scripting.FileSystemObject")
Set MyFile = ScriptObject.CreateTextFile(pasta & nome_foto)
For i = 1 to LenB(foto)
MyFile.Write chr(AscB(MidB(foto,i,1)))
Next
MyFile.Close
end if

'if foto2 <> "" then
'Set ScriptObject = Server.CreateObject("Scripting.FileSystemObject")
'Set MyFile = ScriptObject.CreateTextFile(pasta & nome_foto2)
'For i = 1 to LenB(foto2)
'MyFile.Write chr(AscB(MidB(foto2,i,1)))
'Next
'MyFile.Close
'end if

' Conecta-se ao Banco de Dados
Set conn = Server.CreateObject("ADODB.Connection")
conn.Open "Driver={MySQL ODBC 3.51 Driver}; 'Server=newpointi.com.br; Port = 3306; Database=relacionamentos_newpointi; Uid=admin_onwebdigit; Pwd=new1004pointi;"


' cadastra os dados no banco de dados
sql = "Insert into tab_usuario_cadastro (foto_perfil) values ('"& cfoto &"') WHERE id_usuario ="& npid &""
conn.Execute(sql)

' Redireciona após 5 segundos
response.write "<script>alert('Foto modificada com sucesso!');</script>"
response.write "<meta http-equiv='refresh' content='5; url=updatefoto.asp'/>"
%>

outro


formulario.html
[code]
<HTML>
<HEAD>
<TITLE>Formulário de Upload</TITLE>
</HEAD>
<BODY>
<div align="center"><B>Envie sua foto!</b>
</div>
<FORM METHOD="Post" ENCTYPE="multipart/form-data" ACTION="outputFile.asp">

  <div align="center">Arquivo:
    <INPUT TYPE="file" NAME="blob">
    <BR>
    <INPUT NAME="Enter" TYPE="submit" value="Enviar">
  </div>
</FORM>

</BODY>
</HTML>
[/code]

upload.asp

[code]<%

Sub BuildUploadRequest(RequestBin)
    'Get the boundary
    PosBeg = 1
    PosEnd = InstrB(PosBeg,RequestBin,getByteString(chr(13)))
    boundary = MidB(RequestBin,PosBeg,PosEnd-PosBeg)
    boundaryPos = InstrB(1,RequestBin,boundary)
    'Get all data inside the boundaries
    Do until (boundaryPos=InstrB(RequestBin,boundary & getByteString("--")))
        'Members variable of objects are put in a dictionary object
        Dim UploadControl
        Set UploadControl = CreateObject("Scripting.Dictionary")
        'Get an object name
        Pos = InstrB(BoundaryPos,RequestBin,getByteString("Content-Disposition"))
        Pos = InstrB(Pos,RequestBin,getByteString("name="))
        PosBeg = Pos+6
        PosEnd = InstrB(PosBeg,RequestBin,getByteString(chr(34)))
        Name = getString(MidB(RequestBin,PosBeg,PosEnd-PosBeg))
        PosFile = InstrB(BoundaryPos,RequestBin,getByteString("filename="))
        PosBound = InstrB(PosEnd,RequestBin,boundary)
        'Test if object is of file type
        If  PosFile<>0 AND (PosFile<PosBound) Then
            'Get Filename, content-type and content of file
            PosBeg = PosFile + 10
            PosEnd =  InstrB(PosBeg,RequestBin,getByteString(chr(34)))
            FileName = getString(MidB(RequestBin,PosBeg,PosEnd-PosBeg))
            filename = hour(time) & minute(time) & day(date) & month(date) & year(date) & filename
            'Add filename to dictionary object
            UploadControl.Add "FileName", FileName
            Pos = InstrB(PosEnd,RequestBin,getByteString("Content-Type:"))
            PosBeg = Pos+14
            PosEnd = InstrB(PosBeg,RequestBin,getByteString(chr(13)))
            'Add content-type to dictionary object
            ContentType = getString(MidB(RequestBin,PosBeg,PosEnd-PosBeg))
            UploadControl.Add "ContentType",ContentType
            'Get content of object
            PosBeg = PosEnd+4
            PosEnd = InstrB(PosBeg,RequestBin,boundary)-2
            Value = MidB(RequestBin,PosBeg,PosEnd-PosBeg)
            Else
            'Get content of object
            Pos = InstrB(Pos,RequestBin,getByteString(chr(13)))
            PosBeg = Pos+4
            PosEnd = InstrB(PosBeg,RequestBin,boundary)-2
            Value = getString(MidB(RequestBin,PosBeg,PosEnd-PosBeg))
        End If
        'Add content to dictionary object
    UploadControl.Add "Value" , Value    
        'Add dictionary object to main dictionary
    UploadRequest.Add name, UploadControl    
        'Loop to next object
        BoundaryPos=InstrB(BoundaryPos+LenB(boundary),RequestBin,boundary)
    Loop

End Sub

'String to byte string conversion
Function getByteString(StringStr)
For i = 1 to Len(StringStr)
    char = Mid(StringStr,i,1)
    getByteString = getByteString & chrB(AscB(char))
Next
End Function

'Byte string to string conversion
Function getString(StringBin)
getString =""
For intCount = 1 to LenB(StringBin)
    getString = getString & chr(AscB(MidB(StringBin,intCount,1)))
Next
End Function
%>[/code]


outputfile.asp

[code]<%

Response.Expires=0
Response.Buffer = TRUE
Response.Clear
'Response.BinaryWrite(Request.BinaryRead(Request.TotalBytes))
byteCount = Request.TotalBytes
'Response.BinaryWrite(Request.BinaryRead(varByteCount))

RequestBin = Request.BinaryRead(byteCount)
Dim UploadRequest
Set UploadRequest = CreateObject("Scripting.Dictionary")

BuildUploadRequest  RequestBin

contentType = UploadRequest.Item("blob").Item("ContentType")
filepathname = UploadRequest.Item("blob").Item("FileName")
filename = Right(filepathname,Len(filepathname)-InstrRev(filepathname,"\"))

value = UploadRequest.Item("blob").Item("Value")

'Create FileSytemObject Component
Set ScriptObject = Server.CreateObject("Scripting.FileSystemObject")

'Create and Write to a File
pathEnd = Len(Server.mappath(Request.ServerVariables("PATH_INFO")))-14
Set MyFile = ScriptObject.CreateTextFile(Left(Server.mappath(Request.ServerVariables("PATH_INFO")),pathEnd)&filename)

For i = 1 to LenB(value)
     MyFile.Write chr(AscB(MidB(value,i,1)))
Next

MyFile.Close
%>
<p align="center"><b>Uploaded file : </b><%=filename%><BR>
  <img src="<%=filename%>">
  <!--#include file="upload.asp"-->
</p>
[/code]
esta linha renomeia o arquivo

filename = hour(time) & minute(time) & day(date) & month(date) & year(date) & filename

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.