Jump to content

Archived

This topic is now archived and is closed to further replies.

dark0

Upload sem componentes

Recommended Posts

Olá pessoal.

 

Vou mostrar pra vcs como fazer upload sem componentes.

 

Eu precisei usar isso em um sistema que estou desenvolvendo, e, como sofri um pouco pra achar algo que funcionasse, vou postar aqui pra vocês como fazer.

 

Eu usei aqui 3 páginas pra isso.

Uma delas continha funções, usadas para fazer o upload.

Outra tinha o form, com campos texto e campos file.

E outra, com o código que cadastra no banco de dados, e que faz o upload.

 

 

Página Upload_funcoes.asp

<%

' Upload Sem componentes ---------------------------------------

Sub BuildUploadRequest(RequestBin)

on error resume next

 

PosBeg = 1

PosEnd = InStrB(PosBeg, RequestBin, getByteString(Chr(13)))

boundary = MidB(RequestBin, PosBeg, PosEnd - PosBeg)

BoundaryPos = InStrB(1, RequestBin, boundary)

 

Do Until (BoundaryPos = InStrB(RequestBin, boundary & getByteString("--")))

 

Dim UploadControl

Set UploadControl = CreateObject("Scripting.Dictionary")

 

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)

 

If PosFile <> 0 And (PosFile < PosBound) Then

PosBeg = PosFile + 10

PosEnd = InStrB(PosBeg, RequestBin, getByteString(Chr(34)))

FileName = getString(MidB(RequestBin, PosBeg, PosEnd - PosBeg))

UploadControl.Add "FileName", FileName

Pos = InStrB(PosEnd, RequestBin, getByteString("Content-Type:"))

PosBeg = Pos + 14

PosEnd = InStrB(PosBeg, RequestBin, getByteString(Chr(13)))

ContentType = getString(MidB(RequestBin, PosBeg, PosEnd - PosBeg))

UploadControl.Add "ContentType", ContentType

PosBeg = PosEnd + 4

PosEnd = InStrB(PosBeg, RequestBin, boundary) - 2

Value = MidB(RequestBin, PosBeg, PosEnd - PosBeg)

Else

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

 

UploadControl.Add "Value", Value

UploadRequest.Add Name, UploadControl

BoundaryPos = InStrB(BoundaryPos + LenB(boundary), RequestBin, boundary)

Loop

End Sub

 

Function getByteString(StringStr)

For i = 1 To Len(StringStr)

Char = Mid(StringStr, i, 1)

getByteString = getByteString & ChrB(AscB(Char))

Next

End Function

 

Function getString(StringBin)

getString = ""

For intCount = 1 To LenB(StringBin)

getString = getString & Chr(AscB(MidB(StringBin, intCount, 1)))

Next

End Function

 

' Fim upload sem Componentes -----------------------------------------

%>

Pagina Upload_form.asp

 

<!-- #include file = "upload_funcoes.asp" -->

<table>

<form name="form1" action="upload_form2.asp" method="post" enctype="multipart/form-data">

<tr>

<td>Nome:</td>

<td><input type="text" name="nome" size="20"></td>

</tr>

<tr>

<td>E-mail:</td>

<td><input type="text" name="email" size="20"></td>

</tr>

<tr>

<td>Foto:</td>

<td><input type="file" name="foto" size="14"></td>

</tr>

<tr>

<td colspan="2">

<input type="submit" name="submit" value="Enviar">

</td>

</tr>

</form>

</table>

Pagina upload_form2.asp

 

<!-- #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 ----------------------

nome = UploadRequest.Item("nome").Item("Value")

email = UploadRequest.Item("email").Item("Value")

 

' Tipo de arquivo que esta sendo enviado

tipo_foto = UploadRequest.Item("foto").Item("ContentType")

 

' Caminho completo dos arquivos enviados

caminho_foto = UploadRequest.Item("foto").Item("FileName")

 

' Nome dos arquivos enviados

nome_foto = Right(caminho_foto,Len(caminho_foto)-InstrRev(caminho_foto,"\"))

 

' Conteudo binario dos arquivos enviados

foto = UploadRequest.Item("foto").Item("Value")

 

' pasta onde as imagens serao guardadas

pasta = Server.MapPath("imagens/")

nome_foto = "/"&nome_foto

 

' pasta + nome dos arquivos

cfoto = "imagens/lojas" + 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

 

' Conecta-se ao Banco de Dados

url_conexao = Server.MapPath("banco.mdb")

set conexao = Server.CreateObject("ADODB.Connection")

conexao.open "DRIVER={Microsoft Access Driver (*.mdb)};DBQ="&url_conexao

 

' cadastra os dados no banco de dados

sql = "Insert into lojas (nome,email,foto) values ('"& nome &"', '"& email &"', '"& cfoto &"')"

Conexao.Execute(sql)

 

' Mostra Mensagem de Confirmação na Tela

Response.write "Dados Cadastrados com Sucesso!"

 

' Redireciona após 5 segundos

response.write "<br><br>você será redirecionado em 5 segundos..<br>"

response.write "<meta http-equiv='refresh' content='5; url=index.asp'/>"

%>

Bem. Se mudarem o nome dos arquivos. Vejam nos includes, no começo do código, e alterem para o nome alterado.

 

Para adicionar mais campos, é só seguir essa lógica aí.

Eu testei aqui, antes de postar, e funcionou beleza.

 

Eu testei isso, em Windows XP, rodando IIS.

 

 

Qualquer duvida, podem postar aí

 

Grande abraço,

 

Dark0!

 

 

 

 

Editando..

 

Como esse tópico cresceu bastante, é interessante darem uma lida em todo ele, pois tem muito mais conteúdo lá pra metade dele e pro final tb.

 

Mas, pra ajudar, estou colocando aqui, link para os posts interessantes.

 

- Passo a passo de como enviar mais de 1 arquivo ao mesmo tempo.

http://forum.imasters.com.br/index.php?s=&...st&p=417368

 

 

- Enviando e-mail após o upload, com o anexo que foi upado, com o Componente CDONTS/ASPMAIL.

http://forum.imasters.com.br/index.php?s=&...st&p=470918

 

 

Funções Javascript para Verificar Extensões e Tamanho de Arquivo antes de enviar

http://forum.imasters.com.br/index.php?s=&...st&p=425468

 

Novo

Fazendo UPLOAD + Enviando E-mail com o anexo recem enviado pro servidor

http://forum.imasters.com.br/index.php?s=&...st&p=658611

Share this post


Link to post
Share on other sites

sem componentes tb...

 

http://www.freeaspupload.net

Share this post


Link to post
Share on other sites

mario, quando tiver com tempo.. cria um topico, e posta aí um passo-a-passo de como usar o esquema desse site..pode ser?tipo como eu fiz aqui..pode ajudar tb..t+

Share this post


Link to post
Share on other sites

mario, quando tiver com tempo.. cria um topico, e posta aí um passo-a-passo de como usar o esquema desse site..

 

pode ser?

 

tipo como eu fiz aqui..

pode ajudar tb..

 

t+

cara não tem treta...

 

é só baixar o .zip que vem com dois arquivos, sendo que um deles é classe pronta pra usar e o outro é um exemplo do bixo funcionando...

 

a unica coisa que precisa mudar é o diretorio onde serão carregados os arquivos e dá permissão de escrita neste diretorio...

 

se quiser misturar pra recuperar outros dados do form é só pegar normal com

 

nome_objeto_upload.form("nome_campo")

Share this post


Link to post
Share on other sites

kara este esquema de upload é perfeito... muito útil simples.. e ainda mais sem componentes...posso jogar ele em qualquer servidor que sei que ira funfar numa boa :D

Share this post


Link to post
Share on other sites

kara este esquema de upload é perfeito... muito útil simples.. e ainda mais sem componentes...

posso jogar ele em qualquer servidor que sei que ira funfar numa boa

 

:D

<{POST_SNAPBACK}>

com certeza esta é a melhor parte da coisa...

Share this post


Link to post
Share on other sites

Olá Dark0,Ótima iniciativa essa sua, esse tipo de formulário é muito util. eu copiei e colei o seu formulario e nomeei os arquivos conforme suas instruções e criei um banco de dados com o nome banco e uma tabela "loja" conforme os seus arquivos pedem. No entanto eu estou obtendo o seguinte erro:Erro de tempo de execução do Microsoft VBScript (0x800A000D)Tipos incompatíveis: 'BuildUploadRequest'/imobiliaria/Teste_foto/teste7/upload_form2.asp, line 13Será que você pode me ajudar? Desde já eu agradeço a sua atenção. Obrigado.

Share this post


Link to post
Share on other sites

Ola amigos,Como eu faço para limitar o tamanho do arquivo (kb), e só dar UPLOAD de fotos e não de qualquer documento???Ainda se possivel, existe alguma maneira de limitar a dimensao da foto tambem (Ex: 100x50)? Como?Obrigado,Guilherme de Oliveiradj.guilherme@bol.com.br

Share this post


Link to post
Share on other sites

Olá!

Estava tentando usar esse código para upload, fiz tudo como está dizendo lá, mas ele está apresentando o erro:

 

Server object error 'ASP 0177 : 800401f3'

 

Server.CreateObject Failed

 

/penelopenaweb/loja/upload_form2.asp, line 67

 

acho que é nessa parte do form_upload2:

 

ASP

[*]

 

[*]' 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

 

[*]

A linha 67 é:

Set ScriptObject = Server.CreateObject("Scripting.FileSystemObject")

 

O que será q está acontecendo?

Alguém me dá uma luz... sou iniciante...

Share this post


Link to post
Share on other sites

Acreditem se quiser, mas deu o mesmo erro.... :angry: Será que é problema no servidor que não tem suporte pra isso? :blink: Olhem o erro:Server object error 'ASP 0177 : 800401f3' Server.CreateObject Failed /penelopenaweb/loja/uploadTester.asp, line 40 A linha 40 é:Set fso = Server.CreateObject("Scripting.FileSystemObject")

Share this post


Link to post
Share on other sites

Seu servidor não deve estar permitindo o USO de FSO, está usando hospedagem gratuita?

Share this post


Link to post
Share on other sites

Olá!

Estava tentando usar esse código para upload, fiz tudo como está dizendo lá, mas ele está apresentando o erro:

 

Server object error 'ASP 0177 : 800401f3'

 

Server.CreateObject Failed

 

/penelopenaweb/loja/upload_form2.asp, line 67

 

acho que é nessa parte do form_upload2:

 

ASP

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

A linha 67 é:

Set ScriptObject = Server.CreateObject("Scripting.FileSystemObject")

 

O que será q está acontecendo?

Alguém me dá uma luz... sou iniciante...

<{POST_SNAPBACK}>

PESSOAL!

 

ESTOU PRECISANDO FAZER UM SISTEMA DE UPLOAD MAS TÁ MUITO DIFÍCIL, EU NÃO CONSIGO.... TENTEI O CÓDIGO DO DAKO, MAS NÃO CONSEGUI...

 

TENTEI TAMBÉM A OPÇÃO DO MÁRIO, MAS TAMBEM NÃO CONSEGUI. SERÁ QUE EU SOU TÃO BURRO ASSIM?

 

Alguém me dá uma luz ae... preciso fazer o upload e gravar o nome no banco de dados.

 

Grato galera!

 

Fabiano.

Share this post


Link to post
Share on other sites

Olá!

Estava tentando usar esse código para upload, fiz tudo como está dizendo lá, mas ele está apresentando o erro:

 

Server object error 'ASP 0177 : 800401f3'

 

Server.CreateObject Failed

 

/penelopenaweb/loja/upload_form2.asp, line 67

 

acho que é nessa parte do form_upload2:

 

<!--asp1--><div class='asptop'>ASP</div><div class='aspmain'><!--easp1--><link href = "style_images/css_asp.css" rel = "stylesheet" type = "text/css">

[*]' Faz<font color="8E7144">end</font>o o Upload do arquivo selecionado<br /><br /><font color="8E7144">if</font> foto <> "" <font color="8E7144">then</font><br /><br /> <font color="8E7144">Set</font> ScriptObject <font color="#269900"></font>= <font color="#0080C0">Server</font><font color="#8C00AA">.</font><font color="#979700">CreateObject</font>("Scripting.FileSystemObject")<br /><br /> <font color="8E7144">Set</font> MyFile <font color="#269900"></font>= <font color="#0080C0">ScriptObject</font><font color="#8C00AA">.</font><font color="#979700">CreateTextFile</font>(pasta & nome_foto)<br /><br /> For i <font color="#269900"></font>= 1 to <font color="#979700">LenB</font>(foto)<br /><br /> <font color="#0080C0">MyFile</font><font color="#8C00AA">.Write</font> <font color="#979700">chr</font>(<font color="#979700">AscB</font>(<font color="#979700">MidB</font>(foto,i,1)))<br /><br /> <font color="8E7144">Next</font><br /><br /> <font color="#0080C0">MyFile</font><font color="#8C00AA">.Close</font><br /><br /><font color="8E7144">end</font> <font color="8E7144">if</font>

<!--asp2--></div><!--easp2-->

A linha 67 é:

Set ScriptObject = Server.CreateObject("Scripting.FileSystemObject")

 

O que será q está acontecendo?

Alguém me dá uma luz... sou iniciante...

<{POST_SNAPBACK}>

PESSOAL!

 

ESTOU PRECISANDO FAZER UM SISTEMA DE UPLOAD MAS TÁ MUITO DIFÍCIL, EU NÃO CONSIGO.... TENTEI O CÓDIGO DO DAKO, MAS NÃO CONSEGUI...

 

TENTEI TAMBÉM A OPÇÃO DO MÁRIO, MAS TAMBEM NÃO CONSEGUI. SERÁ QUE EU SOU TÃO BURRO ASSIM?

 

Alguém me dá uma luz ae... preciso fazer o upload e gravar o nome no banco de dados.

 

Grato galera!

 

Fabiano.

<{POST_SNAPBACK}>

CARAMBA, FOI SÓ EU FICAR NERVOSO QUE EU CONSEGUI....

 

VALEU PESSOAL, O ERRO ERA A PERMISSAO DE ESCRITA NA PASTA ONDE AS IMAGENS SERÃO INCLUÍDAS... JÁ TINHA DADO A PERMISSÃO, MAS NÃO SEI PQ NÃO ACEITOU... SOU MUITO TOSCO MESMO! http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif

Share this post


Link to post
Share on other sites

oláé possível sim..eu ja usei este esquema para enviar 5 fotos ao mesmo temponao tem misterio.. é só você repetir as linhas do codigo que apontam para o campo file, no form e depois no codigo de upload..em base eh isso..

Share this post


Link to post
Share on other sites

×

Important Information

Ao usar o fórum, você concorda com nossos Terms of Use.