Jump to content


Photo

Erro Desconhecido No Upload...


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

#1 ibreak

ibreak

    Turista

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

Posted 14/04/2006, 13:41

Oi pessoal, blz... montei uma página simples para envio de arquivos para o servidor usando o componente Dundas... muito popular na net por ser free...

Eu tenho um formulário básico que localiza e em seguida envia o arquivo.

Quando eu clico para enviar o arquivo abre uma janéla informando que a página não pode ser exibida, mostrando no final da página o seguinte erro:

HTTP 500 - erro interno do servidor
Internet Explorer


Bem não tenho nem idéia do que possa ser, por isso estou postando aqui o código da página responsável por enviar a foto...

UPLOAD2.ASP

<%
' On Error Resume Next, passa por cima de possíveis erros
'On Error Resume Next

Dim objUpload, objUploadedFile
Dim lstFiles, strPath, str1File
Dim strNome, intItem, strMsg

'Cria uma instancia do objeto Upload e atribui a variável objUpload.
Set objUpload = Server.CreateObject("Dundas.Upload.2")

' Seta a não necessidade de alteração de configurações no servidor.
objUpload.UseVirtualDir = False

'Existe a variável UseUniqueNames, que recebe valor booleano. Estando TRUE
'(default), ela vai anexar ao arquivo um número identificador. Estando FALSE,
'ela conserva o nome do arquivo original.
objUpload.UseUniqueNames = False

'Deve ser utilizada antes do método 'SaveAs' utilizado logo abaixo
objUpload.SaveToMemory

'Pega algumas variaveis importantes que estão presentes no form-html que
'chama esse script
'(é fundamental que estas atribuições só sejam feitas depois de rodar o
"SaveToMemory"
strNome = objUpload.Form("Nome")
intItem = objUpload.Form("selItems")

'Redireciona para o caminho físico onde serão guardados os docs. dependendo
'do módulo
strPath = Server.MapPath("..")&"\fotos\"&strNome&"\"

lstFiles = ""
For Each objUploadedFile in objUpload.Files 
str1File = objUpload.GetFileName(objUploadedFile.OriginalPath)
lstFiles = lstFiles & "<li>" & str1File & "<BR>"
'' Acrescenta como prefixo ao arquivo a chave do item em questao
'entre chaves

' --- Trocamos o nome do arquivo ---
objUploadedFile.SaveAs strPath & "{"&intItem&"}_" & str1File
Next

'Limpa a instância criada na memória do servidor.
Set objUpload = nothing

' Vericamos se existe algum erro no codigo acima

If Err <> 0 Then
' Mensagem de erro
response.write "<b>Erro no envio do arquivo</b>"
Else
response.write "Arquivo gravado com sucesso com a referencia " & intItem
End If 

%>

Abaixo código do formulário. upload.asp

<html>
<body>
<form method="post" action="upload2.asp" enctype="multipart/form-data">
Arquivo: <input type="file" name="arquivo">
<input type="submit" value="Enviar">
</form>
</body>
</html>


#2 Generation

Generation

    Super Veterano

  • Usuários
  • 1546 posts
  • Sexo:Masculino
  • Localidade:Curitiba - PR

Posted 14/04/2006, 13:46

Vá no explorer em Ferramentas/Opçoes da Internet/Avançadas e desmarque a opção Mostrar erros de hhtp amigaveis e veja qual o erro que ele te mostra ;)
Favoritos : | OpenSuse | Opera | Firefox | NetBeans | GMail | Leia As Regras | Use a Busca | Como fazer Perguntas Inteligentes |
“Obstáculos são aquelas coisas medonhas que você vê quando tira seus olhos de seu objetivo” (Henry Ford)
“É impossível para um homem aprender aquilo que ele acha que já sabe.” (Epíteto)
“A única razão da existência do tempo é para que todas as coisas não aconteçam de uma vez.”(Albert Einstein)

#3 ibreak

ibreak

    Turista

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

Posted 14/04/2006, 13:57

Valeu Generation...

O erro que está aparecendo é este: (veja código acima)

Microsoft VBScript compilation error '800a0400'

Expected statement

/news1/arquivos/adm/upload2.asp, line 26

"SaveToMemory"
^

#4 Generation

Generation

    Super Veterano

  • Usuários
  • 1546 posts
  • Sexo:Masculino
  • Localidade:Curitiba - PR

Posted 15/04/2006, 14:08

UPLOAD2.ASP

[code=auto:0]
<%
' On Error Resume Next, passa por cima de possíveis erros
'On Error Resume Next

Dim objUpload, objUploadedFile
Dim lstFiles, strPath, str1File
Dim strNome, intItem, strMsg

'Cria uma instancia do objeto Upload e atribui a variável objUpload.
Set objUpload = Server.CreateObject("Dundas.Upload.2")

' Seta a não necessidade de alteração de configurações no servidor.
objUpload.UseVirtualDir = False

'Existe a variável UseUniqueNames, que recebe valor booleano. Estando TRUE
'(default), ela vai anexar ao arquivo um número identificador. Estando FALSE,
'ela conserva o nome do arquivo original.
objUpload.UseUniqueNames = False

'Deve ser utilizada antes do método 'SaveAs' utilizado logo abaixo
objUpload.SaveToMemory

'Pega algumas variaveis importantes que estão presentes no form-html que
'chama esse script
'(é fundamental que estas atribuições só sejam feitas depois de rodar o
"SaveToMemory"
strNome = objUpload.Form("Nome")
intItem = objUpload.Form("selItems")

'Redireciona para o caminho físico onde serão guardados os docs. dependendo
'do módulo
strPath = Server.MapPath("..")&"\fotos\"&strNome&"\"

lstFiles = ""
For Each objUploadedFile in objUpload.Files
str1File = objUpload.GetFileName(objUploadedFile.OriginalPath)
lstFiles = lstFiles & "<li>" & str1File & "<BR>"
'' Acrescenta como prefixo ao arquivo a chave do item em questao
'entre chaves

' --- Trocamos o nome do arquivo ---
objUploadedFile.SaveAs strPath & "{"&intItem&"}_" & str1File
Next

'Limpa a instância criada na memória do servidor.
Set objUpload = nothing

' Vericamos se existe algum erro no codigo acima

If Err <> 0 Then
' Mensagem de erro
response.write "<b>Erro no envio do arquivo</b>"
Else
response.write "Arquivo gravado com sucesso com a referencia " & intItem
End If

%>



so por curiosidade tire a linha que esta em vermelho e faça o teste ;)

[]'s
Favoritos : | OpenSuse | Opera | Firefox | NetBeans | GMail | Leia As Regras | Use a Busca | Como fazer Perguntas Inteligentes |
“Obstáculos são aquelas coisas medonhas que você vê quando tira seus olhos de seu objetivo” (Henry Ford)
“É impossível para um homem aprender aquilo que ele acha que já sabe.” (Epíteto)
“A única razão da existência do tempo é para que todas as coisas não aconteçam de uma vez.”(Albert Einstein)

#5 ibreak

ibreak

    Turista

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

Posted 16/04/2006, 13:01

Generation valeu pela ajuda...

Apareceu outro erro agora, pode me ajudar novamente.

Veja o erro:

DSUpload.UploadedFile.2 error '80004005'

Can't open file for writing.

/news1/arquivos/adm/upload2.asp, line 42


Na linha 42 eu tenho isso: (em vermelho)

' --- Trocamos o nome do arquivo ---
objUploadedFile.SaveAs strPath & "{"&intItem&"}_" & str1File
Next

Obrigado.

#6 Generation

Generation

    Super Veterano

  • Usuários
  • 1546 posts
  • Sexo:Masculino
  • Localidade:Curitiba - PR

Posted 16/04/2006, 14:41

a pasta que esta tentando gravar a imagem nao possue permissao de escrita ;) de permissao a pasta .

[]'s
Favoritos : | OpenSuse | Opera | Firefox | NetBeans | GMail | Leia As Regras | Use a Busca | Como fazer Perguntas Inteligentes |
“Obstáculos são aquelas coisas medonhas que você vê quando tira seus olhos de seu objetivo” (Henry Ford)
“É impossível para um homem aprender aquilo que ele acha que já sabe.” (Epíteto)
“A única razão da existência do tempo é para que todas as coisas não aconteçam de uma vez.”(Albert Einstein)

#7 ibreak

ibreak

    Turista

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

Posted 20/04/2006, 16:13

Demorei a responder este post porque diante da resposta do Generation iniciei um processo de discussão com o servidor afim de verificar porque está ocorrendo esse erro de permissão na pasta. Bem depois de muita discussão eles me enviaram um link aonde o upload funciona normalmente.

O Upload é feito pelo dundas também.
Veja o código que eles testaram:

<% Dim objUpload
Set objUpload = Server.CreateObject("Dundas.Upload.2")

objUpload.MaxFileSize = 150000
objUpload.UseVirtualDir = True
objUpload.UseUniqueNames = False

objUpload.Save "/"

Set objUpload = Nothing

Response.Write "Upload efetuado com sucesso"
%>

Não entendo porque este dá certo e o meu não. Veja o erro que continua a dar no meu código:

DSUpload.UploadedFile.2 error '80004005'

Can't open file for writing.

/teste/adm/upload2.asp, line 42


Na linha 42 do código, completo em mensagens anteriores, eu tenho isso:

' --- Trocamos o nome do arquivo ---
objUploadedFile.SaveAs strPath & "{"&intItem&"}_" & str1File
Next

Porque o meu continua a acusar erro de permissão e o que o servidor montou pra teste funciona?

#8 Prog

Prog

    ...

  • Ex-Admins
  • 3761 posts
  • Sexo:Masculino
  • Localidade:Rio de Janeiro/RJ
  • Interesses:TI, Software Livre, Design Digital e Rock'n'Roll.

Posted 22/04/2006, 16:17

Favor, verificar as diferenças entre um código e o outro.

Detalhe: O sistema só pode gravar nas pastas que possuem permissões para tal.

Procure referências na documentação sobre o uso apropriado deste componente.
------
Mero mortal!

#9 Generation

Generation

    Super Veterano

  • Usuários
  • 1546 posts
  • Sexo:Masculino
  • Localidade:Curitiba - PR

Posted 23/04/2006, 14:49

Após seguir os conselhos do Prog, verifique tbem se Path(caminho da pasta) esta correto, lembro que ja usei um codigo igual a esse e funfou belezinha...se o outro salva pode ser que esteja tentando salvar em pasta que nao tem a permisao :)

[]'s
Favoritos : | OpenSuse | Opera | Firefox | NetBeans | GMail | Leia As Regras | Use a Busca | Como fazer Perguntas Inteligentes |
“Obstáculos são aquelas coisas medonhas que você vê quando tira seus olhos de seu objetivo” (Henry Ford)
“É impossível para um homem aprender aquilo que ele acha que já sabe.” (Epíteto)
“A única razão da existência do tempo é para que todas as coisas não aconteçam de uma vez.”(Albert Einstein)

#10 Fernando_Ramos

Fernando_Ramos

    Fernando Ramos

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

Posted 24/04/2006, 11:03

cara...roda localmente....da full control...em uma pasta e testa...para ver se o código esta correto....
--
www.ramosinformatica.com
contato@ramosinformatica.com | @rinformatica

Hospedagem de site | Desenvolvimento de Sistemas | Informática em Geral

#11 ibreak

ibreak

    Turista

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

Posted 24/04/2006, 14:08

:D Pessoal depois de muitos testes consegui resolver o problema. O Upload está sendo feito agora. O problemas era apenas com o caminho da pasta que estava errada.

Tenho duas perguntas sobre o código e gostaria de que me ajudassem neste mesmo tópico...

Neste trecho do código completo acima,

objUploadedFile.SaveAs strPath & "{"&intItem&"}_" & str1File

o nome do arquivo é trocado. Suponhamos que eu envie o arquivo foto1.jpg, o Dundas Upload2 vai trocar para {}_foto1.jpg

Pelo que eu entendi ele apenas acrescenta os ítens em vermelho descritos no código ao nome do arquivo enviado.

Como eu poderia por exemplo fazer ele trocar o nome todo, tipo ao invés de apenas acrescentar caracteres ao nome, mudar o nome todo, como foto1.jpg, foto2.jpg, foto3.jpg e assim sucessivamente.

Eu procurei na busca do Fórum mas não encontrei em si ítens que falavam sobre isso...

Quero agradecer a todos que me ajudaram de álguma forma. Muito obrigado.

#12 Fernando_Ramos

Fernando_Ramos

    Fernando Ramos

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

Posted 24/04/2006, 14:40

VC TERA Q MUDAR ISSO:

objUploadedFile.SaveAs strPath & "FOTO<NUMERO>.JPG"

PORÉM VC TERÁ Q IMPLANTAR UMA ROTINA...PARA SABER QUAL É O PROXIMO NUMERO A SER COLOCADO E QUE ESSE NUMERO..NÃO CONFLITA COM UM JÁ EXISTENTE....
--
www.ramosinformatica.com
contato@ramosinformatica.com | @rinformatica

Hospedagem de site | Desenvolvimento de Sistemas | Informática em Geral

#13 ibreak

ibreak

    Turista

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

Posted 24/04/2006, 17:55

Fernando andei procurando na net algo sobre essa rotina para mudar o nome das fotos para uma sequência de números, mas não encontrei. Se você ou alguém puder ajudar nessa rotina agradeço... Valeu... :)

#14 ibreak

ibreak

    Turista

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

Posted 28/04/2006, 14:15

Alguém pode ajudar?

Muito obrigado.

#15 Fernando_Ramos

Fernando_Ramos

    Fernando Ramos

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

Posted 28/04/2006, 14:26

seguinte...

tenta fazer algo...como...colocar os nomes das fotos sempre FOTOS_<NUMERO>..

ai vc usa o split para separar pelo delimitador "_", depois vc verifica qual é o numero...

viu qual é o numero...soma 1 a este numero...

apos somar o numero vc tera algo FOTOS_<NUMERO>+1, com essa string...vc tera q verificar se ja existe uma foto com esse numero...caso exista soma mais um ao numero...e faz a verificação...sempre q existir vc soma 1...senão existir...salva a foto com aquele nome..

rs...

agora é só implantar!

abraços!
--
www.ramosinformatica.com
contato@ramosinformatica.com | @rinformatica

Hospedagem de site | Desenvolvimento de Sistemas | Informática em Geral




1 user(s) are reading this topic

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

IPB Skin By Virteq