Jump to content

Archived

This topic is now archived and is closed to further replies.

wills

 upload de arquivo multiplo

Recommended Posts

pessoal, estou com um pequeno problema.... creio que seja simples

 

tenho o seguinte fonte

 

			on error resume next
			arquivos = "caminhovirtual"	
			Set objUpload = Server.CreateObject("Dundas.Upload.2")
			objUpload.UseVirtualDir = False
			objUpload.UseUniqueNames = False
			objUpload.MaxFileSize = 6000000
			objUpload.Save arquivos
			
			if err.number <> 0 then
%>
<script type="text/javascript">
window.addEvent('domready', function() {
	Sexy.error('<h1>erro!</h1><p>tamanho do arquivo deve ser até 60mb!</p>')
})
</script>
<%
			else
			
				For Each arquivos in objUpload.Files
					Path = arquivos.Path
					NomeArquivo = objUpload.GetFileName(Path)
				Next			
				
				DataHora = RIGHT("0" & Day(Now),2) & "_" & RIGHT("0" & Month(Now),2) & "_" & Year(Now) & "_" & RIGHT("0" & Hour(Now),2) & "_" & RIGHT("0" & Minute(Now),2) & "_" & RIGHT("0" & Second(Now),2)
	
				Set fso = CreateObject("Scripting.FileSystemObject")  
				Set fileObject = fso.GetFile("caminhovirtual" & NomeArquivo)
				fileObject.Name = DataHora & "_" &  NomeArquivo
				Set fileObject = Nothing  
				Set fso = Nothing  
				
				NomeArquivo = DataHora & "_" &  NomeArquivo
	
				insert = "insert into clientes(nome,mail,telefone,paginas,descricao,psd,data)"
				insert = insert & "values ('" & objUpload.Form("txtNome") & "','" & objUpload.Form("txtMail") & "',"
				insert = insert &  "'" & objUpload.Form("txtTelefone") & "','" & objUpload.Form("txtPaginas") & "','" & objUpload.Form("txtDesc") & "','" & NomeArquivo & "', '"& Now() & "')"
				set inseri = bd.execute(insert)

o problema está na hora de inserir no banco pois, tenho dois campos file.... e ele só salvo o primeiro nome, ou seja, ele duplica o nome no bd nas duas colunas....

 

mas no diretório virtual ele salva que uma beleza

Share this post


Link to post
Share on other sites

olá amigo...

 

tem um exemplo no lab. de script, onde você pode fazer upload de mais de 2 arquivos, dá uma pesquisada

pode te ajudar

Share this post


Link to post
Share on other sites

então cara, é que eu não se se compensa alterar todo meu fonte para isso... sendo que é um erro "besta" que eu não estou conseguindo matar...entendes?

Share this post


Link to post
Share on other sites

você pode recuperá-los atrave de um array e dar um SPLIT, para separar o que recuperou e inserir atraves de um loop na SQL

Share this post


Link to post
Share on other sites

olha este exemplo:

 

<%
Response.Buffer = true
on error resume next

'declara as variáveis
dim objUpload
dim strMessage

'cria instância do objeto
set objUpload = server.CreateObject("Dundas.Upload.2")

'verifica um possível erro
if err.number <> 0 then
Response.Redirect "Dundas.asp?Message=" & err.description
end if

'estipula o tamanho máximo do arquivo
objUpload.MaxFileSize = 1048576 

'formatando o nome do arquivo
objUpload.UseUniqueNames = false

'informa o path onde os arquivos serão salvos
'obs: o diretório deve ter permissão de escrita
objUpload.Save "c:\www\login\web\teste"

dim temp

'verifica erro
if IsEmpty(objUpload.Form("txtName")) = false then temp = " "
if err.number <> 0 then
strMessage = objUpload.Form("txtName") & temp & "Falha, ocorreu o erro: " & err.description

'mensagem de sucesso
else
strMessage = "Upload realizado com sucesso pelo" & temp & objUpload.Form("txtName") & "."
end if 

Response.Redirect "Dundas.asp?Message=" & strMessage

'destroi o objeto
set objUpload = nothing
%>

nesse exemplo foi usado o diretório teste. Substitua pelo diretório em que você deseja gravar. Esse diretório deve necessariamente ter permissão de escrita.

 

Agora faça um formulário que passará as informações ao script asp responsável por chamar o componente.

 

Use a seguinte tag input no seu formulário:

 

<input NAME="File1" TYPE="file">

<input NAME="File2" TYPE="file">

Share this post


Link to post
Share on other sites

então cara, o upload eu consigo realizar na boa.... o problema é na hora de salvar no banco o nome das imagens... ele salva apenas o nome da primeira imagem, ou seja: ele duplicada para as duas colunas no bd o mesmo nome...o upload vai que uma beleza

Share this post


Link to post
Share on other sites

recupera e atrbui a uma variavel seu request.form, ele virá como um array

e depois use o SPLIT, para separar o que recuperou e inserir atraves de um loop na SQL

 

faça uma pesquisa no forum, vai encontrar vários exemplos

 

olha este exemplo

Set objUpload = server.CreateObject("Dundas.Upload.2")

'objUpload.MaxFileSize = 15000000 
objUpload.UseVirtualDir = True 
objUpload.Useuniquenames = False
'objupload.SavetoMemory 

caminho = "../pasta/bco_img/"
objUpload.Save caminho & arquivo

origName = objUpload.GetFileName(objUpload.Files(0).Path)
SQL= "INSERT INTO tb_imagem VALUES ('"&origName&"')"
Set rsImg = Server.CreateObject("ADODB.recordset")
rsImg.Open sql, Conexao, 3
objUpload.Save caminho & UploadRequest.Item("arquivo").Item("FileName")

Share this post


Link to post
Share on other sites

eu fiz isto

				For Each objUploadedFile in objUpload.Files
				caminho=objUploadedFile.Path
				foto = objUpload.GetFileName(caminho)
				arquivoNome = objUploadedFile.TagName 
					Dim MyArray(2)
					Myarray(1) = foto
					Myarray(2) = foto
				Next 

mas na array ele grava o mesmo valor para amba as posições

 

se eu der um response.write(foto) ele me retorna os valores certos...

Share this post


Link to post
Share on other sites

atribui foto a uma variavel e tente jogar no array, e verifique se ele gera algum erro ???

Share this post


Link to post
Share on other sites

ele me imprimiiu isto:

 

Posição 1 Array:aaa.png
Posição 2 Array:aaa.png
Posição 1 Array:bbb.png
Posição 2 Array:bbb.png

 

ele passou 4 vezes pelo for....

 

o que eu fiz:

			For Each objUploadedFile in objUpload.Files
				caminho=objUploadedFile.Path
				foto = objUpload.GetFileName(caminho)
				arquivoNome = objUploadedFile.TagName 
				
				imgFoto = foto
		
					Dim MyArray(2) 'Array com 10 posições
					Myarray(1) = imgFoto
					Myarray(2) = imgFoto
				
				Response.write ("Posição 1 Array:" & Myarray(1) & "<br>")
				Response.write ("Posição 2 Array:" & Myarray(2) & "<br>")

				Next 

Share this post


Link to post
Share on other sites

olha este exemplo, recuperando vrios dados e inserindo atraves de um loop

 

qtd_produtos = split(Request.Form("qtd_produtos"),",")
if qtd_produtos = ""
produtos= Split(Request.Form("produtos"), ",")

For i = 1 To Request.Form("produtos").Count

Response.write request.form("produtos")(i)&"<BR>" & request.form("qtd_produtos")(i)&"<BR>"
SQL = "INSERT INTO lista (lista_prodID,lista_quant) Values ('"&request.form("produtos")(i)&"','"&request.form("qtd_produtos")(i)&"')"

Share this post


Link to post
Share on other sites

ele gera algum erro ???

Share this post


Link to post
Share on other sites

veja esse exemplo mas é com aspsmartupload, só fiz dessa maneira pois queria ter acesso ao nome, acredito que com outra maneira desse

 

<%
Set Upload = Server.CreateObject("ASPSmartUpload.SmartUpload")
	Upload.AllowedFilesList = "pdf"
	Upload.Upload
	
	l=0
	while l < Upload.Form("conta").values-0
		if Upload.files("documento"&l).size > 0 then
			Upload.files("documento"&l).SaveAs("pasta/"&replace(Upload.files("documento"&l).filename,"'",""))
		end if
	l=l+1
	wend

Set Upload = Nothing
response.redirect "alvaras.asp"
%>


no form fica assim

 


<form name="up" enctype="multipart/form-data" method="post" action="upload.asp">
		<input type="File" name="documento0" />
 	<input type="File" name="documento1" />
 	...
		<input type="Hidden" name="conta" value="2" /> <!--aqui mete o total de campos file que tem-->
		<input type="Submit" value="Guardar" />
</form>

Share this post


Link to post
Share on other sites

ele me imprimiiu isto:

 

Posição 1 Array:aaa.png
Posição 2 Array:aaa.png
Posição 1 Array:bbb.png
Posição 2 Array:bbb.png

 

ele passou 4 vezes pelo for....

 

o que eu fiz:

			For Each objUploadedFile in objUpload.Files
				caminho=objUploadedFile.Path
				foto = objUpload.GetFileName(caminho)
				arquivoNome = objUploadedFile.TagName 
				
				imgFoto = foto
		
					Dim MyArray(2) 'Array com 10 posições
					Myarray(1) = imgFoto
					Myarray(2) = imgFoto
				
				Response.write ("Posição 1 Array:" & Myarray(1) & "<br>")
				Response.write ("Posição 2 Array:" & Myarray(2) & "<br>")

				Next 

Subindo o tópico do limbo pq eu precisei fazer a mesma coisa. Fiz uma pequena modificação e acho que era isso que o camarada queria:

 

For Each objUploadedFile in objUpload.Files
     caminho=objUploadedFile.Path
     foto = objUpload.GetFileName(caminho)
     arquivoNome = objUploadedFile.TagName 
                           
    imgFoto = foto
   
    Response.write ("Posição: " & imgFoto & "<br>")
Next 

Ele imprime certinho. Se tiver 2, mostra 2. Se tiver 3, mostra 3.

 

Para salvar no banco eu coloco um insert dentro desse foreach com a variável imgfoto.

 

Só para constar, já que cheguei aqui buscando uma solução para um problema.

 

Publique-se! :D

Share this post


Link to post
Share on other sites

×

Important Information

Ao usar o fórum, você concorda com nossos Terms of Use.