Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
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>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
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?
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
rs... me complicou!
como assim cara?
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">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
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")
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...
atribui foto a uma variavel e tente jogar no array, e verifique se ele gera algum erro ???
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>")
Nextolha 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)&"')"alterei o seu exemplo mas não rolou nada
ele gera algum erro ???
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>>
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
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