Ir para conteúdo

POWERED BY:

Arquivado

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

wilnet

[Resolvido] Persits.Jpeg

Recommended Posts

Boa tarde colegas...

 

Estou tendo um problema que não sei o que pode ser.

 

Já estou desde cedo e até agora nada...

 

Já pesquisei no Google mas são diferentes do meu...

 

Por isso vou tentar ajudas no forum...

 

Tenho uma página de Cadastro com vários campos de texto, e faço UPLOAD de até 12 Fotos de uma única vez.

 

O problema é que: Quando subo fotos com tamanhos pequenos (menos que 100k por foto) o script vai bem.

 

Porém, quando subo fotos com tamanhos igual ou acima de 300k por fotos da esse erro:

 

Microsoft OLE DB Provider for ODBC Drivers error '80004005' 

[Microsoft][ODBC Microsoft Access Driver]General error Unable to open registry key 'Temporary (volatile) Jet DSN for process 0x9e4 Thread 0xa3c DBC 0x190c034 Jet'. 

../upload_form.asp, line 9

A linha 9 é:

 

RequestBin = Request.BinaryRead(byteCount)

 

Já tem um "Server.ScriptTimeout" também para aumentar o tempo.

 

O que pode ser????

 

Com fotos menores que 100k vai normal.

 

Se for com fotos maiores da erro.

 

Se alguém tiver alguma idéia agradeço por favor,

 

William

Compartilhar este post


Link para o post
Compartilhar em outros sites

verifique as permissões de arquivo e pasta e certifique-se de nao deixar o banco aberto (tipo access aberto com o arquivo)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Obrigado pela atenção xanburzum.

 

Mas veja, o sistema funciona quando subo fotos menores que 100k. São um total de 12 fotos.

 

Só não sei porque ele está dando esse erro quando subo fotos maiores ou acima que 100k.

 

Já fucei tudo aqui, fiz várias alterações e nada.

 

Grato,

Compartilhar este post


Link para o post
Compartilhar em outros sites

veja se existe alguma propriedade no código , onde você pode aumentar o tamanho do arquivo...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Então, estou fazendo vário testes aqui.

 

Observei agora tb que, se subir fotos com tamanhos acima de 100k, mas com até 5 a 6 fotos, também funciona,

 

Está assim:

 

Fotos até 100k, posso enviar as 12 fotos normalmente.

 

Fotos acima de 100k, posso enviar até 5 Fotos normalmente - Acima disso da erro. nessa parte do código " RequestBin = Request.BinaryRead(byteCount)"

 

Ta muito doido isso, a cabeça até doe ak rsrs.

 

grato.

Compartilhar este post


Link para o post
Compartilhar em outros sites

é o limite de tamanho de dados que você esta usando

Compartilhar este post


Link para o post
Compartilhar em outros sites

Por favor, me desculpe mas não entendi.

 

Como assim o limite do tamanho de dados.

Compartilhar este post


Link para o post
Compartilhar em outros sites

exemploolha este exemplo, onde no code, a imagem deve ser menor que 200 kb

 


<%Else   If LenB(value) > 200000 then%>
<script language=javascript>
alert("Erro ao enviar a imagem, o tamanho do arquivo deve ser menor que 200Kb")
enviar.disabled = false;
</script>
<%     
 Else
%>

...

...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Legal essa verificação xanburzum.

 

Mas no meu caso não posso limitar o tamanho menor que 1Mega (1000k),

 

Só preciso resolver esse erro.

 

Pq preciso que o sistema suba até 12 Fotos de um vez, com tamanho por foto de até 1000k, acima disso é que eu limito com ALERT.

 

Vou preparar parte do code e postar em sequencia ok?

 

grato

 

Segue parte do code:

 

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

<%
Server.ScriptTimeout = 50

' Chamando Funções, que fazem o Upload funcionar
    byteCount = Request.TotalBytes
    RequestBin = Request.BinaryRead(byteCount)
    Set UploadRequest = CreateObject("Scripting.Dictionary")
    BuildUploadRequest (RequestBin)

' FOTO 01 Checa a extensão do arquivo, se é valida ou não
if UploadRequest.Item("foto1").Item("FileName") = "" then
anexo = "nao"
else

' Tipo de arquivo que esta sendo enviado
tipo_arquivo1 = split(UploadRequest.Item("foto1").Item("FileName"),".")
tipo_arquivo_1 = "." & tipo_arquivo1(ubound(tipo_arquivo1))

extensoesOk = ",.bmp, .gif, .jpg, .jpeg" 
exte = split(extensoesOk,",")

a = 0
for i=0 to ubound(exte)
if trim(Lcase(tipo_arquivo_1)) = trim(exte(i)) then
a = 1
end if
next

if a <> 1 then
response.write "<center><b>Foto 01</b> está com Tipo de arquivo inválido!<br>"
response.write "Os arquivos permitidos são:<b> "& extensoesOk & "</b><br>"
response.write "Qualquer outra extensao não será permitida!</center>"
%><tr><td><div align="center"><a href="javascript:history.back()"><img src="../imagem/bt_voltar.gif" width="62" height="28" border="0"></a></div></td></tr>
<%
response.end
end if
end if
%>

' Tipo de arquivo que esta sendo enviado
 tipo_foto1 = UploadRequest.Item("foto1").Item("ContentType")


' Caminho completo dos arquivos enviados
caminho_foto1 = UploadRequest.Item("foto1").Item("FileName")


' Nome dos arquivos enviados
nome_foto1 = Right(caminho_foto1,Len(caminho_foto1)-InstrRev(caminho_foto1,"\"))


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

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

' pasta + nome dos arquivos
url_foto1 = "" + nome_foto1

<%
'**************************** Inicio foto 01 *************************************

    if foto1 <> "" then
        Set ScriptObject = Server.CreateObject("Scripting.FileSystemObject")
        Set MyFile = ScriptObject.CreateTextFile(pasta & nome_foto1)
        For i = 1 to LenB(foto1)
        MyFile.Write chr(AscB(MidB(foto1,i,1)))
        Next
        MyFile.Close
	
'Reduz a Foto01 Maior "FOTOS".
Set Jpeg = Server.CreateObject("Persits.Jpeg")
Jpeg.Open diretorio_upload + nome_foto1

L = fotosImoveisGr

 If jpeg.OriginalWidth > jpeg.OriginalHeight Then
   jpeg.Width = L
   jpeg.Height = jpeg.OriginalHeight * L / jpeg.OriginalWidth
Else
   jpeg.Height = L
   jpeg.Width = jpeg.OriginalWidth * L / jpeg.OriginalHeight
End If

Jpeg.Save diretorio_upload + nome_foto1


'Reduz a Foto01 menor "Thumbs".
Set Jpeg = Server.CreateObject("Persits.Jpeg")
Jpeg.Open diretorio_upload + nome_foto1

L = fotosImoveisPq

 If jpeg.OriginalWidth > jpeg.OriginalHeight Then
   jpeg.Width = L
   jpeg.Height = jpeg.OriginalHeight * L / jpeg.OriginalWidth
Else
   jpeg.Height = L
   jpeg.Width = jpeg.OriginalWidth * L / jpeg.OriginalHeight
End If

Jpeg.Save diretorio_upload_1 + nome_foto1
End If

'**************************** Fim foto 01 *************************************
%>


<%	
' Cadastra os dados no banco de dados
    sql = "Insert into xxxxx (foto1...) values ('"& foto1 &"')"
    xxxxx.Execute(sql)
    
' Mostra Mensagem de Confirmação na Tela
    Response.Redirect("./xxxxx.asp")
%>

Eu peguei apenas os da Foto1, isso tudo repete até a foto 12.

 

Grato.

Compartilhar este post


Link para o post
Compartilhar em outros sites

veja se dentro do arquivo upload_funcoes, tem a propriedade para aumentar o tamanho do arquivo

Compartilhar este post


Link para o post
Compartilhar em outros sites

Muito grato mais uma vez...

 

O code do "upload_funcoes.asp" é esse..

 

Não sei onde pode alterar aqui, não entende esses códigos.

 

 

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

Tomara que seja nesse código xanburzum,

 

Grato mais uma vez pela atenção.

 

William

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá patrique, obrigado.

 

Veja o erro é esse:

 

Microsoft OLE DB Provider for ODBC Drivers error '80004005' [Microsoft][ODBC Microsoft Access Driver]General error Unable to open registry key 'Temporary (volatile) Jet DSN for process 0x9e4 Thread 0xa3c DBC 0x190c034 Jet'.

../upload_form.asp, line 9

A linha 9 é essa:

RequestBin = Request.BinaryRead(byteCount)"

Está assim:

 

Fotos até 100k, posso enviar as 12 fotos normalmente.

 

Fotos acima de 100k, posso enviar até 5 Fotos normalmente - Acima disso da erro. nessa parte do código " RequestBin = Request.BinaryRead(byteCount)"

 

grato

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pesquisei e parece que isso é no servidor e não no code... parece que o iis limita em 200kb o upload dos arquivos... achei o seguinte texto

 

Make sure the IIS web server is not restricting the size of ASP uploads. IIS 6 (Windows Server 2003) has a limit of 200 KB for ASP requests in general and file uploads in particular. To remove this limitation in IIS 6 you need to edit the Metabase file, which can be found at c:\Windows\System32\Inetsrv\MetaBase.xml.

 

Follow these steps: go to IIS and right click the server, select properties, and check the box "Allow changes to MetaBase configuration while IIS is running"; if after this step the metabase file is still locked, try turning off IIS or even restarting the machine in safe mode; open the file in an editor; the variable AspMaxRequestEntityAllowed limits the number of bytes in the page request (by default 200KB); change the value to 1073741824 (unlimited) or to a limit of your choice; check whether the same variable shows up in other places in the file.

Traduzido...

 

Verifique se o servidor web IIS não esta restringindo o tamanho

de uploads no ASP. IIS 6 (Windows Server 2003) tem um limite

de 200 KB para solicitações ASP em geral e uploads de arquivos em

particular. Para eliminar esta limitação no IIS 6 você precisa

editar o arquivo de metabase, que pode ser encontrada em

c: \ Windows \ System32 \ inetsrv MetaBase.xml \.

 

Siga esses passos: vá para o IIS e com o botão direito do servidor,

selecione Propriedades, e marque a caixa "Permitir alterações

MetaBase configuração, o IIS é executado ", se depois

desta etapa, o arquivo de metabase ainda estiver bloqueado, tente girar

fora do IIS ou mesmo reiniciar a máquina em modo de segurança, abra

o arquivo em um editor, a variável

AspMaxRequestEntityAllowed limita o número de bytes em

a solicitação de página (200KB por padrão); altere o valor para

1073741824 (ilimitado) ou ao limite de sua escolha;

verificar se a mesma variável aparece em outros lugares

no arquivo.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Interessante essa sua pesquisa patrique.

 

Mas isso acontece no server, e não em minha máquina, então terei que solicitar isso para o suporte de meu server?

 

Grato.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Infelizmente sim ou então utilizar um outro método de upload, nesse caso existe componentes que fazem esta tarefa de forma mais pratica.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Patrique, fiz uma grande descoberta agora rsrs,

 

Montei os dados contendo apenas os campos de up load com as 12 fotos, e as páginas necessárias, bd, css, enfim.

 

Publiquei em um outro domínio mas no mesmo Server, e fiz o teste, para minha surpreza... foi normal com as 12 fotos todas acima de 300k.

 

Isso significa que o problema aparentemente está no Server então.

 

Amanhã, irei fazer a prova dos nove por completo. irei publicar todo o arquivo por inteiro para garantir, e então efetuar novamente os testes.

 

Muito grato mais uma vez.

 

William

Compartilhar este post


Link para o post
Compartilhar em outros sites

Se tiver acesso ao servidor, e este ser o iis6 tem que editar o ficheiro metabase.xml, por defeito o upload está limitado até 200Kb se não me engano, veja a solução aqui

Compartilhar este post


Link para o post
Compartilhar em outros sites

usando um componente como , por exemplo o SmartUpload

ele tem uma propriedade que você pode alterar o tamanho do arquivo

 

Upload.MaxFileSize = 1000000

 

exemplo:

 

<!--#include file="../ConnDB.asp"-->
<%
Dim objUpload
Set objUpload = Server.CreateObject("aspSmartUpload.SmartUpload")

'Tamanho Máximo por Upload - 1.000.000 bytes = 1 MB
objUpload.MaxFileSize = 1000000

'Extensões permitidas
objUpload.AllowedFilesList = "gif,jpeg,jpg,png"

objUpload.Upload

'Pasta para ser salva.
objUpload.Save(Server.MapPath("../perfil"))

'Recupera o nome da foto, depois a variável & NomeDaFoto.FileName & para mostrar.
Set NomeDaFoto = objUpload.Files("IMAGEM")

Set objUpload = Nothing
                
Conn.Execute ("UPDATE menuperfil SET img01perfil='" & NomeDaFoto.FileName & "'")
Response.Redirect("../perfil.asp")
%>

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.