Ir para conteúdo

POWERED BY:

Arquivado

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

Ambrosio

Alter espaço por underline

Recommended Posts

Galera,

 

Tem um tempo que não mexo com ASP e to com uma duvida...

 

To com um código que peguei na internet para fazer upload de arquivos que achei mais simples e consegui integrar a um site...

 

Porem gostaria que nao hora de gravar o arquivo no servidor, o arquivo que contenha espaços fique como _

 

Aula de Fisica 1.doc

ficar

Aula_de_Fisica_1.doc

 

O codigo:

<%@ Language=VBScript %>
<%
	Dim Contador, Tamanho
	Dim ConteudoBinario, ConteudoTexto
	Dim Delimitador, Posicao1, Posicao2
	Dim ArquivoNome, ArquivoConteudo, PastaDestino
	Dim objFSO, objArquivo 
			
	PastaDestino = Server.MapPath("files")&"\"
				
	'***** Determina o Tamanho do Conteúdo *****
	Tamanho = Request.TotalBytes
	'***** Obtém o Conteúdo no Formato Binário *****
	ConteudoBinario = Request.BinaryRead(Tamanho)

	'***** Transforma o Conteúdo Binário em String *****
	For Contador = 1 To Tamanho
		ConteudoTexto = ConteudoTexto & Chr(AscB(MidB(ConteudoBinario, Contador, 1)))
	Next
	'***** Determina o Delimitador de Campos *****
	Delimitador = Left(ConteudoTexto,InStr(ConteudoTexto, vbCrLf)-1)

	'***** Percore a String Procurando os Campos   *****
	'***** Identifica os Arquivos e Grava no Disco *****
	Set objFSO = Server.CreateObject("Scripting.FileSystemObject")
	 
	Posicao1 = InStr(ConteudoTexto, Delimitador) + Len(Delimitador)
	Do While True
		ArquivoNome = ""
		Posicao1 = InStr(Posicao1, ConteudoTexto, "filename=")
		If Posicao1 = 0 Then
			Exit Do
		Else
			'***** Determina o Nome do Arquivo *****
			Posicao1 = Posicao1 + 10
			Posicao2 = InStr(Posicao1, ConteudoTexto, """")
			For Contador = Posicao2-1 To Posicao1 Step -1
				If Mid(ConteudoTexto, Contador, 1) <> "\" Then
					ArquivoNome = Mid(ConteudoTexto, Contador, 1) & ArquivoNome
				Else
					Exit For
				End If
			Next
			
			'***** Determina o Conteúdo do Arquivo *****
			Posicao1 = InStr(Posicao1, ConteudoTexto, vbCrLf & vbCrLf) + 4
			Posicao2 = InStr(Posicao1, ConteudoTexto, Delimitador) - 2
			ArquivoConteudo = Mid(ConteudoTexto, Posicao1, Posicao2-Posicao1+1)
		
			'***** Grava o Arquivo *****
			If ArquivoNome <> "" Then
				Set objArquivo = objFSO.CreateTextFile(PastaDestino & ArquivoNome, True) 
				objArquivo.WriteLine ArquivoConteudo	 
				objArquivo.Close 
				Response.Redirect "ipema_members.asp?action=enviararquivo"
				Set objArquivo = Nothing
			End If
		End If
	Loop
	Set objFSO = Nothing 
%>

Compartilhar este post


Link para o post
Compartilhar em outros sites

<%

if (instr(texto," ") > 0) then

texto = replace(texto," ","_")

end if

%>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu nem li o seu código.

 

Mas pelo que vi aqui no final dele, antes de gravar ele verifica se variável ArquivoNome está vazia para depois gravar.

 

Então eu acho que é melhor você colocar dentro do IF que verifica. Ficaria +- assim:

If ArquivoNome <> "" Then
				if (instr(ArquivoNome ," ") > 0) then
					  ArquivoNome = replace(ArquivoNome ," ","_")
				end if
				Set objArquivo = objFSO.CreateTextFile(PastaDestino & ArquivoNome, True) 
				objArquivo.WriteLine ArquivoConteudo	 
				objArquivo.Close 
				Response.Redirect "ipema_members.asp?action=enviararquivo"
				Set objArquivo = Nothing
			End If

Compartilhar este post


Link para o post
Compartilhar em outros sites

Basta fazer este replace mesmo

 

No caso ai acho que nem se faz necessario a verificação de se ter o espaço

 

basta substituir

Compartilhar este post


Link para o post
Compartilhar em outros sites

Gosto de verificar pq tem casos que a variável não recebe nenhum valor, aí quando faz o replace dá mensagem de erro. Coloco só por segurança mesmo. ^_^

Compartilhar este post


Link para o post
Compartilhar em outros sites

mas com If ArquivoNome <> "" Then voce nao garantiu?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Me expressei mal Mario.

 

Já aconteceu comigo da variável, mesmo não estando vazia, não possuir a string que queria substituir. Aí apresentou uma mensagem de erro. Desde então faço o procedimento acima. Sempre verifico antes de mandar substituir.

Compartilhar este post


Link para o post
Compartilhar em outros sites

comigo nunca houve este erro nestas condições

Compartilhar este post


Link para o post
Compartilhar em outros sites

Fiz alguns testes aqui mas infelizmente não consegui reproduzir o erro novamente.

 

Talvez possa ter sido um fato isolado e eu interpretei errado achando que aconteceria sempre.

 

Vou voltar a usar o replace direto, sem instr, caso aconteça de novo posto aqui um exemplo.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Falei porque realmente nunca vi este erro

 

Até fiz novos testes aqui depois que voce reportou mas novamente nao constatei

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.