Ir para conteúdo
Fórum Script Brasil
  • 0

Upload Sem Componentes


dark0

Pergunta

Olá pessoal.

Vou mostrar pra vocês 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

Link para o comentário
Compartilhar em outros sites

  • Respostas 75
  • Created
  • Última resposta

Top Posters For This Question

Posts Recomendados

  • 0
Salve!

Só pra saber, demora muito para fazer o upload localmente?

Ou tem algum erro aqui mesmo?

se ao enviar o arquivo ele demorar muito, (localmente é quase instantaneo) verifique se seu antivirus tem algum bloqueador de scripts e verifique as permissões de escrita na pasta de destino.

Link para o comentário
Compartilhar em outros sites

  • 0

Então eu comecei com testes com imagens pequenas. ... Não sei se as alterações que fiz no código está atrapalhando. Estou usando a função, postado sem alteração mas alterei o arquivo que recebe os dados do form. Sou novo em asp... então to tendo problemas.

Codigo que estou usando

subcategoria    = request("subcategoria")
    nome_pt            = request("nome_pt")
    nome_en            = request("nome_en")
    ativar            = request("ativar")
    observacao        = request("observacao")    
    
    ' Chamando Funções, que fazem o Upload funcionar
    Tamanho             = Request.TotalBytes
    ConteudoBinario     = Request.BinaryRead(Tamanho)
    Set UploadRequest     = CreateObject("Scripting.Dictionary")
    BuildUploadRequest ConteudoBinario
    
    ' Recuperando os Dados Digitados ----------------------
    subcategoria        = UploadRequest.Item("subcategoria").Item("Value")
    nome_pt             = UploadRequest.Item("nome_pt").Item("Value")
    nome_en             = UploadRequest.Item("nome_en").Item("Value")
    ativar                = UploadRequest.Item("ativar").Item("Value")
    observacao            = UploadRequest.Item("observacao").Item("Value")
    
    ' Tipo de arquivo que esta sendo enviado
    tipo_foto_alta         = UploadRequest.Item("img_alta").Item("ContentType")
    tipo_foto_baixa     = UploadRequest.Item("img_baixa").Item("ContentType")
    tipo_foto_thumb        = UploadRequest.Item("img_thumb").Item("ContentType")
    
    ' Caminho completo dos arquivos enviados
    caminho_foto_alta    = UploadRequest.Item("img_alta").Item("FileName")
    caminho_foto_baixa    = UploadRequest.Item("img_baixa").Item("FileName")
    caminho_foto_thumb    = UploadRequest.Item("img_thumb").Item("FileName")
    
    ' Nome dos arquivos enviados
    nome_foto_alta        = Right(caminho_foto_alta,Len(caminho_foto_alta)-InstrRev(caminho_foto_alta,"\"))
    nome_foto_baixa        = Right(caminho_foto_baixa,Len(caminho_foto_baixa)-InstrRev(caminho_foto_baixa,"\"))
    nome_foto_thumb        = Right(caminho_foto_thumb,Len(caminho_foto_thumb)-InstrRev(caminho_foto_thumb,"\"))
    
    ' Conteudo binario dos arquivos enviados
    img_alta = UploadRequest.Item("img_alta").Item("Value")
    img_baixa = UploadRequest.Item("img_baixa").Item("Value")
    img_thumb = UploadRequest.Item("img_thumb").Item("Value")
    
    ' pasta onde as imagens serao guardadas
    pasta = array (Server.MapPath("..\imgs\alta"),Server.MapPath("..\imgs\baixa"),Server.MapPath("..\imgs\thumb"))
    nome_foto_alta         = "\"&nome_foto_alta
    nome_foto_baixa     = "\"&nome_foto_baixa
    nome_foto_thumb     = "\"&nome_foto_thumb
    
    foto                = array (nome_foto_alta,nome_foto_baixa,nome_foto_thumb)
    ' pasta + nome dos arquivos
    cfoto                 = array (nome_foto_alta, nome_foto_baixa, nome_foto_thumb)
        
    ' Fazendo o Upload do arquivo selecionado
    for p = 0 to ubound(pasta)
        response.write pasta(p) & foto(p)&"<br>"
        Set ScriptObject = Server.CreateObject("Scripting.FileSystemObject")
        Set MyFile     = ScriptObject.CreateTextFile(pasta(p) & foto(p),true)
        For i = 1 to LenB(foto(p))
            MyFile.Write chr(AscB(MidB(foto(p),1)))
        Next
        MyFile.Close
        Set objFS     = Nothing
    next

Link para o comentário
Compartilhar em outros sites

  • 0

Rafael, tinha testado e mesmo assim corrompeu o arquivo, arquivo de 7kb...

Ai achei uma solução agora tarde, que é o SaFileUpload que tá funcionando certinho..

Mas estou com outro problema, como preciso fazer cadastro no banco, eu recupero o nome da imagem do formulário, mas a acentuação muda tudo, e só para esse cadastro, os outros cadastro vão certinho com a acentuação, mas nesse cadastro da imagem não vai. Você teria alguma idéia do porque está acontecendo isso?

E como nas outras página a codificação desse form é UTF-8.

Obrigado pela atenção

Link para o comentário
Compartilhar em outros sites

  • 0

Sim... mas 7 kb é maior do que 60 bytes!

Certamente era problema de "permissões" do server!

Quanto ao outro assunto procure aqui no fórum tem um tópico meu sobre isso bem recente até ou abra um novo tópico no fórum de asp, aqui não é o local adequado para isso, visto que e´exclusivamente para tratarmos de assuntos pertinentes a apostilas e tutoriais!

[]'s Rafael Spilki

Link para o comentário
Compartilhar em outros sites

  • 0

dark0,

Cara, teu codigo é muito bom, to batendo cabeça com componentes mas nenhum foi tão simples e funcional(essa é a ideia), como o seu.

Esquecendo a rasgação de seda(rs!), queria te pedir uma ajuda ou de outro membro pra fazer uma pequena edição nesse código.

Como o código já faz quase tudo, queria somente fazer uma alteração de forma que ele alterasse o nome do arquivo enviado, adicionando ao nome do arquivo o numero do ID do cadastro.

Explicando:

Enviei o arquivo de imagem: imagem1.jpg para o registro já existente ID(auto numeração): 16

Queria que o código pegasse esse nome image1.jpg e transformasse em imagem116.jpg, salvasse na pata de imagens e no BD(isso ele já faz, eu sei).

Com isso nunca teria arquivos repetidos.

Link para o comentário
Compartilhar em outros sites

  • 0
dark0,

Cara, teu codigo é muito bom, to batendo cabeça com componentes mas nenhum foi tão simples e funcional(essa é a ideia), como o seu.

Esquecendo a rasgação de seda(rs!), queria te pedir uma ajuda ou de outro membro pra fazer uma pequena edição nesse código.

Como o código já faz quase tudo, queria somente fazer uma alteração de forma que ele alterasse o nome do arquivo enviado, adicionando ao nome do arquivo o numero do ID do cadastro.

Explicando:

Enviei o arquivo de imagem: imagem1.jpg para o registro já existente ID(auto numeração): 16

Queria que o código pegasse esse nome image1.jpg e transformasse em imagem116.jpg, salvasse na pata de imagens e no BD(isso ele já faz, eu sei).

Com isso nunca teria arquivos repetidos.

Resolvi, VLW!

Link para o comentário
Compartilhar em outros sites

  • 0

Bom dia... cara é a primeira vez que posta na comunidade... Sou muito novo em asp, acabei um curso basicão a pouco tempo. Bem, vamos ao q importa... rs. Parabéns pelo código, funcionou muito bem para mim. E olha q sou muito novo nesse trem.

Muito obrigado pelo código.

Link para o comentário
Compartilhar em outros sites

  • 0

boa tarde bareta. é a segunda vez q posto no forum... a primeira foi para lhe agradecer pelo código. a segunda á para ver e tem como você me ajudar com um problema... eu preciso subir mais de uma imagem. estou tentando mudar o código para isso.

ele grava certo no banco, não dá mensagem de erro mas só manda uma imagem para a pasta de destino. vou postar o código, se você puder me ajudar vou lhe agradecer muito.

desde já muito obrigado.

<!-- #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")
eu = UploadRequest.Item("eu").Item("Value")

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

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

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

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

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


' pasta + nome dos arquivos
cfoto = "imagens/produtos" + nome_foto
cfoto2 = "imagens/produtos" + nome_foto2

' 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("up_teste.mdb")
set conexao = Server.CreateObject("ADODB.Connection")
conexao.open "DBQ=D:/Trab_profissionais/Pasta_Web/CURSO_ASP/upload/up_teste.mdb;driver={microsoft access driver (*.mdb)}"
' cadastra os dados no banco de dados
sql = "Insert into teste (nome,email,eu,foto,foto2) values ('"& nome &"', '"& email &"', '"& eu &"','"& cfoto &"','"& cfoto2 &"')"
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 1 segundos..<br>"
response.write "<meta http-equiv='refresh' content='1; url=Upload_form.asp'/>"
%>

Editado por kuroi
Adicionar tag CODE
Link para o comentário
Compartilhar em outros sites

  • 0

tentou adicionar

' Fazendo o Upload do arquivo selecionado
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

Link para o comentário
Compartilhar em outros sites

  • 0
tentou adicionar

' Fazendo o Upload do arquivo selecionado
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

Funcionou igual a boca de bode.

muito obrigado pela sua ajuda.

Link para o comentário
Compartilhar em outros sites

  • 0

Olha eu denovo.... rs. bareta o trem funcionou muito bem, em um projeto eu subi 04 imagens. estou em outro agora e tenho q subir 400 imagens... estou subindo de 40 em 40 imagens. o meu problema é na segunda parte... eu criei duas páginas de upload. até aí tudo bem.... o problema é q a segunda parte grava certo na página mas cria uma segunda linha no bd, ou seja, as primeiras 40 em um código e as oustras em outro código.

teria como você me dar uma luz ?

Valeu.

Link para o comentário
Compartilhar em outros sites

  • 0
Hummm interessante, porém parece que é muito lento...

Estou fazendo o upload e abro o diretório de destino da imagem e vejo a mesma ser construida aos poucos pela pré visualização que o windows faz do arquivo...

Vejam a imagem abaixo do koala sendo criado pouco a pouco

poucoapouco.jpg

Abraços,

Hélio

Possivelmente é lento sim..

Para ter agilidade, o ideal é utilizar componentes, que usam mais recursos de máquina.

Aqui, é uma alternativa simples e funcional, para quem não tem disponibilidade de uso de componentes.

Eu particularmente, utilizei muito tempo este script, depois acabei mudando para componente que meu provedor disponibilizava.

Abraços

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.




  • Estatísticas dos Fóruns

    • Tópicos
      152k
    • Posts
      651,7k
×
×
  • Criar Novo...