Ir para conteúdo

POWERED BY:

Arquivado

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

Helinho Coelho

[Resolvido] Problemas com formulário Upload e acentuação de carac

Recommended Posts

Olá,

 

Estou com um probleminha que eu nunca tive antes porém não estou conseguindo solucionar. Tenho um formulário com enctype="multipart/form-data" e ele aponta para uma página .ASP que faz o upload e o registro de dois campos no MySQL. O upload funciona bem e o registro dos campos fica com caracteres ilegíveis. Vale ressaltar que a página do formulario está configurada para UTF-8 e a página de upload.asp também.

 

FORMULARIO

<%@LANGUAGE="VBSCRIPT" CODEPAGE="65001"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"[]>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
   <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
</head>
<body>

<form name="form1" enctype="multipart/form-data" action="upload.asp">
<input name="colecao" type="text" id="colecao" value="" size="25" maxlength="50" />
<textarea name="sinopse" cols="64" rows="6" id="sinopse"></textarea>
<input name="imagem" type="file">
<input type="submit" name="submit" value="Cadastrar"/>
</form>

</body>
</html>

 

 

 

UPLOAD (upload.asp)

<%
Server.scripttimeout = 10000

Dim objUpload
Set objUpload = Server.CreateObject("aspSmartUpload.SmartUpload")

  objUpload.CodePage = "utf-8"
  objUpload.AllowedFilesList = "jpg,jpeg,png"
  objUpload.MaxFileSize = 500000

If Request.TotalBytes > 500000 Then
  Response.Redirect "up_erro.asp"
Else

  With objUpload
       .Upload
	fotoNome = .Files("imagem").FileName
  End With 

colecao = objUpload.Form("colecao")
sinopse = objUpload.Form("sinopse")
numero = RSid.Fields.Item("id").Value + 1

       foto = numero & ".jpg"
       caractere = "_"

   For Each File In objUpload.Files
   If Not File.IsMissing Then
   File.SaveAs(Server.MapPath("../images/colecoes/_") & foto)
   End If

Next

sql = "INSERT INTO colecoes (colecao,sinopse,imagem) VALUES ('"&colecao&"','"&sinopse&"','"&caractere&""&foto&"')"
Set conexao = conexao.execute(sql)


Set JPEGg = Server.CreateObject("Persits.Jpeg")
       JPEGg.Open (Server.MapPath("../images/colecoes/_"& foto))
       if JPEGg.Width > JPEGg.Height then
           intXSize = 210
           intYSize = (intXSize / JPEGg.Width) * JPEGg.Height
       else
           intYSize = 300
           intXSize = (intYSize / JPEGg.Height) * JPEGg.Width
       end if
       JPEGg.Width = intXSize
       JPEGg.Height = intYSize
       JPEGg.Save(Server.MapPath("../images/colecoes/_") & foto)
       Set JPEGg = nothing

  Response.Redirect "up_ok.asp"

End If
%>

 

 

Eu dei um Response.Write nos objetos "colecao" e "sinopse" e eles estão retornando algo do tipo:

 

Coleção: Coleção XX

Sinopse: ação para todos

 

Sendo assim eu gostaria de saber como manter os dados dos campos do formulário sempre em UTF-8.

 

OBS: eu fiz o mesmo formulário sem usar o upload de imagem e deu certo, ou seja, os dados são gravados no MySQL com a acentuação correta, mas quando o formulário é do tipo enctype="multipart/form-data" ele dá pau!

 

 

Grato!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá, também andei em tempos com esse problema, e com o aspsmartupload nunca deu, o único componente que testei e funcionou foi o aspupload da persits, só que não é grátis...

Compartilhar este post


Link para o post
Compartilhar em outros sites

você esta usando UTF-8 no upload...

 

na pagina HTML retire o codepage.

 

abra a pagina de upload no dreamweaver, faça o atalho CTRL + J e vá em title/encoding e veja qual está... precisa ser UTF-8 também!

Compartilhar este post


Link para o post
Compartilhar em outros sites

para UTF-8

 

Mudar o head da página que solicita os dados para que ele fique assim

<meta http-equiv="content-type" content="text/html; charset=utf-8" />

 

Na página que responde os dados colocar isso antes do retorno co conteúdo (logo no topo):

<%
Response.AddHeader "Content-Type", "text/html; charset=utf-8"
Response.AddHeader "Pragma", "no-cache"
response.Charset="utf-8"
%>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá pessoal,

 

• Testei a forma do TED K' retirando o codepage e não deu certo (conferi a página de upload no dreamweaver e ela está sim em UTF-8);

• Fiz a modificações de acordo com as instruções do XANBURZUM e não deu certo.

 

Os caracteres ilegíveis continuam aparecendo!

 

* Coleção XXÚltima Coleção

 

 

=/

Compartilhar este post


Link para o post
Compartilhar em outros sites

isso tem haver com o componente, instale o aspupload, pode usar 30 dias, e depois veja na documentação como fazer o upload e vai ver que recebe os caracteres como deve ser.

Compartilhar este post


Link para o post
Compartilhar em outros sites

ou use um sistema de upload com FSO, daí não precisa de componentes de terceiros

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pois então,

 

Tentei utilizar o modelo FSO de upload sem componentes que se encontra na biblioteca de scripts mas não deu certo (deu erro na parte de "ScriptObject.CreateTextFile(pasta & nome_foto)"). Será que alguém tem um modelo mais simples de upload com gravação de dados de forma a manter o UTF-8?

 

Acabei de tentar fazendo em ASPupload de acordo com as orientações do "SALOERIC" mas continua com os caracteres ilegíveis!!! Será que alguém pode me ajudar? Já verifiquei várias e várias vezes e as minhas páginas estão todas em UTF-8 e quando o formulário é normal funciona OK, mas quando o formulário fica no tipo enctype="multipart/form-data" aí os caracteres ficam malucos.

Compartilhar este post


Link para o post
Compartilhar em outros sites

tem alguns o´timos exemplos no fórum , inclusive para multiplos arquivos ao mesmo tempo

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom pessoal, eu consegui encontrar uma solução para a questão!

 

Eu inseri os seguintes valores (na linha abaixo) no topo da página "upload.asp" e mudei o componente SmartUpload para ASPupload aí deu certo:

 

<%
Session.CodePage = 65001
Response.CharSet = "UTF-8"
%>

 

 

 

Então a página "upload.asp" ficou assim!

<!--#include file="cnx.asp" -->
<%
Session.CodePage = 65001
Response.CharSet = "UTF-8"


Dim RSid
Dim RSid_cmd
Dim RSid_numRows

Set RSid_cmd = Server.CreateObject ("ADODB.Command")
RSid_cmd.ActiveConnection = MM_conexao_STRING
RSid_cmd.CommandText = "SELECT * FROM colecoes ORDER BY id DESC" 
RSid_cmd.Prepared = true

Set RSid = RSid_cmd.Execute
RSid_numRows = 0


Set AspUpload = Server.CreateObject("Persits.Upload.1")

AspUpload.CodePage = 65001 
AspUpload.OverwriteFiles = True
AspUpload.SetMaxSize 500000
AspUpload.Save("E:\wwwroot\meusite\images\colecoes\")

For Each File in AspUpload.Files
       colecao = AspUpload.Form("colecao")
       sinopse = AspUpload.Form("sinopse")
       imagem = RSid.Fields.Item("id").Value + 1 &".jpg"

        SQL = "INSERT INTO colecoes(colecao,sinopse,imagem) VALUES ('"&colecao&"','"&sinopse&"','"&imagem&"')"
        Conexao.Execute(SQL)
Next

If Err <> 0 Then
Response.Redirect "up_erro.asp"
Else
Response.Redirect "up_ok.asp"
End If

Set AspUpload = Nothing
Conexao.Close


RSid.Close()
Set RSid = Nothing
%>

 

 

Agradeço a todos pela paciência e grande ajuda em me clarear as idéias em relação à questão de Upload + UTF-8.

 

 

Um forte abraço a todos e o tópico está solucionado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

bom que resolveu..

mas caso algum server não suporte determinado componente, use o FSO

coloquei um sistema de varios arquivos ao mesmo tempo para upload, usando uma

barra de progresso.

 

até mais

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.