Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
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!
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!
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"
%>
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
=/
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.
ou use um sistema de upload com FSO, daí não precisa de componentes de terceiros
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.
tem alguns o´timos exemplos no fórum , inclusive para multiplos arquivos ao mesmo tempo
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.
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
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...