Ir para conteúdo

Arquivado

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

Gilberto Jr

Acentuação Nome Arquivo Upload

Recommended Posts

Boa tarde pessoal,

 

Eu tenho um sistema de upload de arquivos. Porém estou com o seguinte problema, quando o nome do arquivo tem acentos o sistema faz o upload com caracteres no lugar do nome do arquivo.

 

Segue abaixo o código de upload

<%@LANGUAGE="VBSCRIPT" CODEPAGE="65001"%>
<%
Response.AddHeader "Content-Type", "text/html; charset=utf-8"
Response.AddHeader "Pragma", "no-cache"
response.Charset="utf-8"
%>
<%
'inicio upload
function mask_data( obj )
		obj = CDAte( obj )
		dia = Day( obj  )
		mes = Month( obj )
		ano = Year( obj )
	
			if dia < 10 then
				dia = "0" & dia
			end if

			if mes < 10 then
				mes = "0" & mes
			end if
					
		 mask_data = ano &"-"& mes &"-"& dia
end function

dim conn, rs, nome_foto, Consulta, rs3, anonascimento, senha, ct, insert, rs2, codigo, mensagememail, login
'dim arraymodulos()
'Criamos o objeto de conexão
Set conn = Server.CreateObject("ADODB.Connection") 
 
'Abrimos uma conexão com o banco de dados - [IMPORTANTE] altere os dados abaixo com as informações de sua base de dados
conn.Open("DRIVER={MySQL ODBC 5.1 Driver};SERVER=******;PORT=3306;DATABASE=*****;USER=*****;PASSWORD=*****;OPTION=3;")
	'arquivo que checa se existe o login e a senha do usuario que esta tentando logar

		'Instancia o componente
		SET SaFileUp = Server.CreateObject("SoftArtisans.FileUp") 
		server.ScriptTimeout=99999 ' aumenta o tempo para enviar aquivos maiores
 
			'Configura o caminho onde arquivo será salvo
			SaFileUp.Path = Server.MapPath("../dados/")
                        'Para Revenda substitua o caminho físico para E:\vhosts\SEU_DOMINIO_COMPLETO\httpdocs\
 
			'Você pode usar também o caminho relativo se preferir
			'SaFileUp.Path = Server.MapPath("./upload/")
 
			'Caso o usuário não indique um arquivo para upload, informa erro.
			If SaFileUp.IsEmpty Then
					'response.write "<center>Por favor, indique um arquivo para upload.</center><br>"
					
					response.write ("<script>alert('Seleciona o projeto!');location='index.asp?incluirProjeto=1';</script>")
					
			'caso o campo foto nao esteja vazio entao faz isso
			Else
				'Salva o arquivo no servidor
			SaFileUp.Save
								
				nome_projeto = Right(SaFileUp.Form("projetofile"),Len(SaFileUp.Form("projetofile"))-InstrRev(SaFileUp.Form("projetofile"),"\"))
				
				
				set busca = conn.execute("select max(id_planilha)+1 as id_planilha from tab_caminho where codigo='"&SaFileUp.Form("empresa")&"' and id_projeto='"&SaFileUp.Form("projeto")&"' and id_sub_proj='"&SaFileUp.Form("subprojeto")&"'")
				
				
		
				'INSERT COM O NOME DO PREJETO E SUBE O PROJETO
				set rs1 = conn.execute("insert into tab_caminho (codigo, id_projeto, id_sub_proj, id_planilha, caminho,ativo) values ('"&SaFileUp.Form("empresa")&"','"&SaFileUp.Form("projeto")&"','"&SaFileUp.Form("subprojeto")&"','"&busca("id_planilha")&"','"&nome_projeto&"',1)")

end if

conn.Close()
'Destruímos o objeto
Set conn = Nothing

response.write ("<script>alert('Projeto incluido com sucesso');location='index.asp?incluirProjeto=1&empresa="&SaFileUp.Form("empresa")&"&projeto="&SaFileUp.Form("projeto")&"&subprojeto="&SaFileUp.Form("subprojeto")&"';</script>")

%>

 

Quando o nome do arquivo contem acentos, o nome fica assim.

Relatório.xlsx e o nome correto do arquivo é Relatório.xlsx

 

Alguém poderia me ajudar?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Um exemplo muito comum:

Ao invés de Canção, ele exibe Can��o ou Canção.

No primeiro caso (Can��o), sua página em ISO-8859-1 está obtendo a palavra Canção armazenada em UTF-8 da origem, seja ela do banco de dados ou de um XML, txt etc.

Já o segundo caso (Canção) é a sua página em UTF-8 exibindo a palavra Canção armazenada em ISO-8859-1 da origem.

Para que ocorra a exibição correta, deve-se armazenar novamente os dados com a codificação correta (o que é muito trabalhoso dependendo da quantidade de dados) ou trocar a codificação de exibição de seu site.

 

tirei daqui:
https://wiki.locaweb.com.br/pt-br/Como_resolver_problemas_de_acentuações_em_seu_site

veja se sua página asp está salva em ANSI ou UTF-8 e uniformize a codificação

Compartilhar este post


Link para o post
Compartilhar em outros sites

@Gustavo Emygdio,deu certo da seguinte forma que eu fiz.

 

 

na pagina do formulario eu coloquei no inicio

<%@LANGUAGE="VBSCRIPT" CODEPAGE="1252"%>

e a meta

<meta charset="iso-8859-1">

e na pagina que recebe as informações para fazer o upload coloquei assim

<%@LANGUAGE="VBSCRIPT" CODEPAGE="1252"%>
<%
Response.AddHeader "Content-Type", "text/html; charset=ISO-8859-1"
Response.AddHeader "Pragma", "no-cache"
response.Charset="ISO-8859-1"
%>

Att;

Compartilhar este post


Link para o post
Compartilhar em outros sites

@Gustavo Emygdio Barboza, fiz o teste aqui na pagina onde esta o formulário e a mesma esta salva com ANSI. A pagina que recebe os dados e faz o upload esta salva como UTF-8.

 

Devo mudar ela pra ANSI também?

 

Att;

Compartilhar este post


Link para o post
Compartilhar em outros sites
13 horas atrás, Gustavo Emygdio Barboza disse:

isso ai... se o arquivo ainda fica com caracteres especiais troca também...

Mas eu mudando para ANSI eu deixo 

 

Em 26/04/2017 at 09:17, Gilberto Jr disse:

Response.AddHeader "Content-Type", "text/html; charset=ISO-8859-1" Response.AddHeader "Pragma", "no-cache" response.Charset="ISO-8859-1"

 

ou eu mudo para UTF-8?

 

Att;

Compartilhar este post


Link para o post
Compartilhar em outros sites

<%@LANGUAGE="VBSCRIPT" CODEPAGE="65001"
Response.Charset="ISO-8859-1" %>

Response.CharSet = "ISO-8859-1". No cabeçalho do site coloquei a meta tag <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />, e ao cadastrar qualquer coisa dei um replace nas strings desta forma abaixo.


e 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

  • Conteúdo Similar

    • Por Nightmare SEP
      Estou tendo problemas com acentuação, das informações que estão no banco de dados.
       
      No servidor que está na produção atualmente, rodando uma Intranet, está funcionando normalmente, numa versão mais antiga no XAMPP.
      MySQL: 5.1.41
      PHP: 5.4
      Collation do BD: utf8_general_ci
       
      Segue, como está no banco de dados, e como aparece no HTML.
       
      ---
       
      Porém, formatei o meu computador recentemente, e nele instalei a versão mais atual do XAMPP, com PHP 8.2.
      Criei o bando de dados também com a mesma collation, utf8_general_ci, porém no meu localhost, os acentos aparecem todos zuados.
       
      Uma coisa que percebi, é que no servidor da Intranet, no banco de dados, os acentos ficam zuados, mas no PHP/HTML mostra os acentos corretamente.
      Já no meu computador, os acentos ficam com problema.
       
      É alguma relação com a versão do MySQL? É a Collation errada que estou usando?
       
      Obrigado.

    • Por AlexandreHenrique
      Olá pessoal. preciso de uma ajuda com o meu projeto de upload.
      O projeto de upload roda no IIS + Php;
      Tenho um script que ta enviando  o arquivo para o diretório correto.
      O problema é que ao tentar acessar esse arquivo via URL, o anexo não abre  e exibe a mensagem abaixo.
       

      Notei que o arquivo ao cair no DIR, ele entra sem permissões (vi em propriedades), se eu editar o mesmo alterando as permissões, ele carrega pela url do meu site.
      Quero que o arquivo enviado pelo script caia no DIR correta com as devidas permissões pra eu poder ler no navegador via URL;
       
      Já tentei resolver de toda forma mas nao tive sucesso;.
      No Apache isso é mais simples, mas no IIS ta complicado;
       
       
       
      Alguem pode me dá uma dica?
    • Por Caio Vargas
      Fala pessoa tudo tranquilo ?
      estou com um problema eu fiz um sistema de upload onde tem a marca dagua  o problema e que quando o cadastro da capa e pequena a imagem da marca dagua fica grande
      e qauando a capa e grande  a imagem da marca dagua fica pequena alguem poderia me ajudar 
    • Por mateus.andriollo
      Olá,
      Gostaria de saber se alguem pode me ajudar.
      Meu PHP esta na pasta public_html em um CPanel, quero saber se é possível armazenar em pasta fora da pasta  pública, por segurança mesmo...
      Faço isso em ASP, ai chamo a imagem por um fso, funciona mas queria saber se tem como no PHP.
    • Por DeniseAlencar
      Boar tarde pessoal estou fazendo um teste com upload de imagens gravando no banco de dados porem quando cadastro uma imagem com o nome "foto.jpg" e depois cadastro a mesma imagem com o mesmo nome, no banco de dados aparece dois registros com nomes iguais mas gostaria que os nomes fossem diferentes.
       
      E na pasta arquivos aparece uma unica imagem gostaria que quando cadastrasse fotos iguais o nome mudasse tipo foto.jpg , foto2.jpg  etc (isso automaticamente) vou postar o codigo .
      <?php $diretorio = "arquivos/"; if(!is_dir($diretorio)){ echo "Pasta $diretorio não existe";}else{ $arquivo = isset($_FILES['arquivo']) ? $_FILES['arquivo'] : FALSE; for ($controle = 0; $controle < count($arquivo['name']); $controle++){ $destino = $diretorio."/".$arquivo['name'][$controle]; $nome_foto = $arquivo['name'][$controle]; if(move_uploaded_file($arquivo['tmp_name'][$controle], $destino)){ $sql="INSERT INTO galeria (arquivo) VALUES ('$nome_foto')"; $qry = mysqli_query($conexao,$sql); echo "<head><meta HTTP-EQUIV='refresh' CONTENT='0;URL=index.php'></head>"; }else{ echo "Erro ao realizar upload"; } } } ?>  
×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.