Ir para conteúdo

POWERED BY:

Arquivado

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

Edson L. Zimmermann

Erro eu gravar imagens na pasta após o upload

Recommended Posts

Bom dia,

 

Estou com o seguinte problema, peguei um arquivo pronto aqui para fazer upload de um formulário com textos, e com foto também, funciona certo na minha máquina, mais eu coloquei no servidor não funciona. vou postar os códigos e logo abaixo o erro:

 

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>

Upload_form2.asp

 

<%@LANGUAGE="VBSCRIPT" CODEPAGE="65001"%>
<!-- #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'/>"
%>

o problema ta nessas linhas do segundo código:

 

For i = 1 to LenB(foto)

MyFile.Write chr(AscB(MidB(foto,i,1)))

Next

 

quando eu mando pro servidor dá um erro nessax linha:

 

Erro de tempo de execução do Microsoft VBScript erro '800a0005'

 

Chamada de procedimento ou argumento inválido

 

/upload_form2.asp, line 38

 

 

não sei o que fazer porque se eu tiro essas linhas grava o nome da foto, mais não consigo visualizar a foto depois, grava só o nome da foto na pasta e no banco, será que alguém pode ajudar?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom dia,

 

já verifiquei isso junto ao servidor, e está liberado, fiz um teste com um script usando aspupload e deu certo, só que dai eu não consigo fazer o texto junto com a imagem, e assim daria certo.

 

o que será que pode ser?

Compartilhar este post


Link para o post
Compartilhar em outros sites

entendi.... o erro é de tempo de execução!!!

 

nessa linha:

tente dimencionar as variaveis assim:

 

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

só lembrando... verifique se você realmente enviou o arquivo upload_funcoes.asp para o servidor!!!!

 

at +

Compartilhar este post


Link para o post
Compartilhar em outros sites

Opa

 

hehehe, sabe que eu gelei, achei que tinha esquecido de mandar, mais eu mandei sim, é o seguinte, vou colocar o código aqui com as alterações que você falou pra ver se eu fiz certo.

 

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

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


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'/>"
%>

Se era pra ficar assim, deu outro erro:

 

Objeto Request erro 'ASP 0104 : 80004005'

 

Operação não permitida

 

/upload_form2.asp, line 6

 

 

o endereço que eu to testando é www.dznet.com.br/upload_form.asp

Compartilhar este post


Link para o post
Compartilhar em outros sites

Também utilizo esse script de upload (por sinal muito bom) mas dependendo tamanho do arquivo (em geral quando é maior que 1 MB) ele não envia. Tem como mudar isso, pra arquivos maiores?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olha Edson,

 

no meu caso eu tenho acesso às pastas do servidor, porque o servidor é na própria empresa.

O que eu fiz foi dar uma mexida nas propriedades de segurança da pasta, dando permissões totais para qualquer um alterar o conteúdo da pasta.

Assim envio imagens, qualquer tipo de arquivo, mas se tiver mais de 1MB trava, dá erro. :/

Compartilhar este post


Link para o post
Compartilhar em outros sites

erradooo... era so pra dimencionar!

 

retire o que você acrescentou....

 

é so pra dimencionar onde esta comentado

' Chamando Funções, que fazem o Upload funcionar

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

Compartilhar este post


Link para o post
Compartilhar em outros sites

@vb script: Certo já removi, e voltou a ser como era antes, mais continua dando erro....você tem alguma idéia do que eu posso tentar mudar ainda? ou se você quiser posso passar o ftp pra você.

 

rd111072: Bom na minha máquina eu também dei permissões na pasta pra gravação pe funcionou perfeitamente, só no servidor que encrencou, mais eles me garantem que ta liberado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Edson, acho que o seu erro deve ser problema mesmo no servidor...

O meu é problema de tempo de execução, devido ao tamanho do arquivo.

Talvez se eu alterasse o código... Mas não sei aonde alterar.

Compartilhar este post


Link para o post
Compartilhar em outros sites

boas, sei que este post ja tem uns anitos mas estou exactamente com o mesmo problema.

 

Alguem entretanto descobriu como resolver isto?

Obrigado

Compartilhar este post


Link para o post
Compartilhar em outros sites

aconselho a abrir outro tópico mais recente, e coloque o último erro gerado.

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.