Ir para conteúdo

POWERED BY:

Arquivado

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

romanini

[Resolvido] Upload de um ou vários arquivos de imagem

Recommended Posts

Boa tarde rapaziada,

 

Estou fazendo uma página para fazer upload de imagens de documentos escaneador,tenho um combo na página com o número de documentos que o usuário vai cadastrar, tipo se escolher 1, só vai aparecer um campo para upload, se escolher 2 aparecem 2 campos e assim por diante.

Minha dúvida é para salvar o nome dos arquivos no banco tanto se for 1 só ou 10 de uma vez....

Entenderam? haha....qm puder me ajudar eu fico grato, qlqr coisa mando o meu código para vcs analizarem.

 

Valew!!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você esta utilizando algum componente de upload? geralmente você terá que fazer uma contagem e da um For Each.

 

 

Então meu vou mostrar os códigos.

 

Esse é a função de upload:

'/////////////////////////////////////////////////////////////////////////////////////////////////////
' CLASSE PARA REALIZAR UPLOAD
'/////////////////////////////////////////////////////////////////////////////////////////////////////


'///////////////////////////////////////////////////////////////
Dim uploadsDirVar
uploadsDirVar = "c:\Inetpub\wwwroot\intranet\doc_mot" 
'///////////////////////////////////////////////////////////////

'/////////////////////////////////////////////////////////////////////////////////////////////////////
' INSERE REGISTRO E REALIZA UPLOAD
'/////////////////////////////////////////////////////////////////////////////////////////////////////
QTD = request("CDQTD")

function SaveFiles
Dim Upload, fileName, fileSize, ks, i, fileKey

Set Upload = New FreeASPUpload
Upload.Save(uploadsDirVar)

If Err.Number<>0 then Exit function

			SaveFiles = ""
			ks = Upload.UploadedFiles.keys
			if (UBound(ks) <> -1) then
				SaveFiles = "<B>Files uploaded:</B> "
				for each fileKey in Upload.UploadedFiles.keys
					SaveFiles = SaveFiles & Upload.UploadedFiles(fileKey).FileName & " (" & Upload.UploadedFiles(fileKey).Length & "B) "
					nomeArquivo = Upload.UploadedFiles(fileKey).FileName
				next
			else
				SaveFiles = "Nome de arquivo inválido."
			end if
			
	
		If Upload.Form("INCLUIR") = "1" Then

			DTTRANSMISSAO = month(now())&"-"&day(now())&"-"&year(now())

	
					Query = "INSERT INTO CONTRATO_MOTORISTA "_
								&"("_
								&"NOIMAGEM, "_
								&"CDTPDOC, "_
								&"DTTRANSMISSAO "_
								&") VALUES( "_
								&"'" & nomeArquivo & "', "_
								&"'" & request("CDTPDOC") &  "', "_ 
								&"'" & DTTRANSMISSAO & "' "_
								&")"
					Conn.Execute Query
							
			
				Call MandaMsg("Arquivo importado com sucesso!",False)
				Call Redireciona("frm_ope_doc_mot.asp")
			End If
		
end function

Dim diagnostics
if Request.ServerVariables("REQUEST_METHOD") <> "POST" then
    diagnostics = TestEnvironment()
    if diagnostics<>"" then
        response.write diagnostics
        response.write "<p>After you correct this problem, reload the page."
    end if
else
    response.write SaveFiles()
end if

'/////////////////////////////////////////////////////////////////////////////////////////////////////
' FIM - INSERE REGISTRO E REALIZA UPLOAD
'/////////////////////////////////////////////////////////////////////////////////////////////////////

%>

 

Esse é o form:

 

 <form name="frm" id="frm" method="post" action="frm_ope_doc_mot.asp" enctype="multipart/form-data" >
                                        <div class="formBox_main">
                          <label class="l2"> <span class="label">Nome Motorista:</span>
                          
                            <input type="text" class="textpp" name="NOMECOLABORADOR" id="NOMECOLABORADOR"  value="<%=Nome%>"  style="width:300px;"/>
                            <input type="hidden" name="CDCOLABORADOR" id="CDCOLABORADOR" value="">
                             
                          </label>
                           
                      <label class="l2" style="width:100px;"><span class="label">CPF:</span>
                      
                        <input name="CPF"  id="CPF" class="textpp" style="width:300px;" type="text" value="" onkeypress="autocomplete(this.value,event,'CDPESSOAMOTORISTA')" size="70" />
                   
                      </label>
                       <label class="l2" style="width:620px;"><span class="label">RG:</span>
                      
                        <input name="RG"  id="RG" class="textpp" style="width:300px;" type="text" value="" onkeypress="autocomplete(this.value,event,'CDPESSOAMOTORISTA')" size="70" />
                    
                      </label>   
                      <label class="l2" style="width:620px;"><span class="label">Número Contrato</span>
                      
                        <input name="NRCONTRATO"  id="NRCONTRATO" class="textpp" style="width:300px;" type="text" value="" onkeypress="autocomplete(this.value,event,'CDPESSOAMOTORISTA')" size="70" />
                    
                      </label>   
                      
                        <label class="l2"> <span class="label">Quantidade de documentos:</span><span class="texto4">
						  <select name="CDQTSDOCS" id="CDQTSDOCS" style="width:109px"  onChange="verificar()">
                            <option value="0">Selecione...</option>
                            
                            <%
							consulta = "select count(*) as ct from TIPO_DOCUMENTO"
							Set rsConsulta = Conn.Execute(consulta)
										
							while not rsConsulta.EOF
								For ctConsulta = 0 To rsConsulta.Fields.Count - 1
									ctDoc = rsConsulta("ct")
								next
								rsConsulta.MoveNext
							wend 
							
								ctD = 1
								while ctD <= ctDoc
								
									response.Write("<option value="&ctD&">"&ctD&"</option>")
									
								ctD = ctD + 1
								wend
							%>
                            
                          </select>
						  </span></label>

                         <label style="width:600px">
                        
						  <%
						  if request("CDQTD") <> "" then
						  %>
                            <h5>Upload da Imagem </h5>
                            <%
                          
						  	ct = 0
						  	while ct < cInt(request("CDQTD"))
						  %>
                          
                            <label> <span class="label">Tipo de Documento:</span>
                         
                         <select name="CDTPDOC<%=Request("ct")%>" id="CDTPDOC<%=Request("ct")%>" style="width:90px;height:25px" >
                            <option value="0">Selecione...</option>
                            
                            
                            	<%
								consultaTP = "select CDTPDOC, NODOC from TIPO_DOCUMENTO"
								set rsconsultaTP = conn.Execute(consultaTP)
								while not rsconsultaTP.EOF
									
									if (cDbl(Request("CDTPDOC")) = cDbl(rsconsultaTP("CDTPDOC"))) then
										SELECTED = "SELECTED"
									else
										SELECTED = ""
									end if
									
									response.Write("<option value="&rsconsultaTP("CDTPDOC")&" "&SELECTED&">"& rsconsultaTP("NODOC") & "</option>")
								rsconsultaTP.MoveNext
								wend
								%>
                            
                           
                          </select>

                          
                          <input name="attach1" type="file" size="30" >
                          
                         
                        </label>
                          <%
						  ct = ct + 1
						 wend
						%>
                         <br>
						 <label>
                           <input name="INCLUIR" type="hidden" id="INCLUIR" value="1" />
                         <input type="submit" name="upload" value="UPLOAD" id="upload" class="blueButton largeBtn1" /></label></label>
                        
                        <%						  
						  end if
						  %>

                        </div>
                        <br>
                         
                       
						</form>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Velho esse já esta com o for each, ao que vejo entendi errado sua dúvida, poderia reformulá-la para um melhor entendimento.

 

[]'s

Compartilhar este post


Link para o post
Compartilhar em outros sites

Velho esse já esta com o for each, ao que vejo entendi errado sua dúvida, poderia reformulá-la para um melhor entendimento.

 

[]'s

 

 

O for é para aparecer os campos de upload conforme o número de documentos que o usuário vá cadastrar, dai minha dúvida é pra caso tenham 2 ou mais campos, pra ele ir salvando no banco e fazer o upload de todos ao mesmo tempo, eu tentei um while e não rolou.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Velho essa é a parte do code que me refiro

 

for each fileKey in Upload.UploadedFiles.keys
    SaveFiles = SaveFiles & Upload.UploadedFiles(fileKey).FileName & " (" & Upload.UploadedFiles(fileKey).Length & "B) "
    nomeArquivo = Upload.UploadedFiles(fileKey).FileName
next

Pela lógica esse code resgata os campos e com a função SaveFiles salva os arquivos dos campos, repare que ele faz a contagem utilizando fileKey in Upload.UploadedFiles.keys e depois executa a string com

 

response.write SaveFiles()

pela logica deveria ser assim, pois não é uma função e sim uma string

 

response.write SaveFiles

tente da maneira acima e poste o resultado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Velho essa é a parte do code que me refiro

 

for each fileKey in Upload.UploadedFiles.keys
    SaveFiles = SaveFiles & Upload.UploadedFiles(fileKey).FileName & " (" & Upload.UploadedFiles(fileKey).Length & "B) "
    nomeArquivo = Upload.UploadedFiles(fileKey).FileName
next

Pela lógica esse code resgata os campos e com a função SaveFiles salva os arquivos dos campos, repare que ele faz a contagem utilizando fileKey in Upload.UploadedFiles.keys e depois executa a string com

 

response.write SaveFiles()

pela logica deveria ser assim, pois não é uma função e sim uma string

 

response.write SaveFiles

tente da maneira acima e poste o resultado.

 

 

eu tinha feito esse código com um campo fixo de upload dava certo, mas ai eu adaptei para aparecer mais campos conforme a opção do usuário.

 

daí dá o seguinte erro:

 

Objeto Request erro 'ASP 0208 : 80004005'

 

Não é possível usar a coleção genérica Request

 

/intranet/frm_ope_doc_mot.asp, line 49

 

Não é possível usar a coleção genérica Request após chamar BinaryRead.

 

 

Esse erro dá quando eu coloco 1 campo só, caso eu coloque mais de 1 dá esse erro:

 

Erro de tempo de execução do Microsoft VBScript erro '800a01c9'

 

Esta tecla já está associada com um elemento desta coleção

 

/intranet/sgi/lib/funcoes.asp, line 874

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ops agora eu vi a função rsrsrsrs portanto mantenha o response.write SaveFiles() e retire o que eu disse.

 

Seguinte pela lógica a função de inserção do bd deve ficar dentro do for each e ela esta fora.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ops agora eu vi a função rsrsrsrs portanto mantenha o response.write SaveFiles() e retire o que eu disse.

 

Seguinte pela lógica a função de inserção do bd deve ficar dentro do for each e ela esta fora.

 

 

haha sussa.....mas então mano, coloquei dentro do for mas continuam o mesmo erro...esse bagulho tá complicado

Compartilhar este post


Link para o post
Compartilhar em outros sites

O erro é esse então

 

request("CDTPDOC")

o code diz que não é possivel utilizar request, tente manualmente sem o uso dele e veja se vai, se for realmente isso teremos que descobrir uma forma de chamar sem que de o erro.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Troque o QTD = request("CDQTD")

Por Upload.Form("CDQTD"), após o Upload.Save

Att;

Compartilhar este post


Link para o post
Compartilhar em outros sites

Troque o QTD = request("CDQTD")

Por Upload.Form("CDQTD"), após o Upload.Save

Att;

 

 

é como esse comando deu certo....realmente foi o request, vou dar uma pensada aqui, caso você descubra antes agradeço haha

Compartilhar este post


Link para o post
Compartilhar em outros sites

Se você tem elementos de vários arquivos com o mesmo nome, vai ocorrer esse erro - para consertar o problema de nomenclatura. Isso também pode acontecer com versões mais antigas do Internet Explorer, que teve problemas de codificação com certos caracteres quando usado post HTTP.

 

Você também pode obter este erro se você estiver usando Scripting.Dictionary e tentar adicionar uma chave duplicada. certifique-se que você não está adicionando chaves duplicadas. Se você quiser substituir uma chave que já existe, Se você está preenchendo um objeto de dicionário de um conjunto de registros, certifique-se de usar DISTINCT ou GROUP BY para que você possa impedir chaves duplicadas.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Se você tem elementos de vários arquivos com o mesmo nome, vai ocorrer esse erro - para consertar o problema de nomenclatura. Isso também pode acontecer com versões mais antigas do Internet Explorer, que teve problemas de codificação com certos caracteres quando usado post HTTP.

 

Você também pode obter este erro se você estiver usando Scripting.Dictionary e tentar adicionar uma chave duplicada. certifique-se que você não está adicionando chaves duplicadas. Se você quiser substituir uma chave que já existe, Se você está preenchendo um objeto de dicionário de um conjunto de registros, certifique-se de usar DISTINCT ou GROUP BY para que você possa impedir chaves duplicadas.

 

Eu estava dando uma olhada no código, acho q o problema é q quando tem 2 ou mais campos para upload, ele não está atribuindo um nome diferente para cada um, por isso está dando erro.....será q é isso mesmo, vcs tem alguma idéia?

 

valew

Compartilhar este post


Link para o post
Compartilhar em outros sites

você arrumou a situação do Insert? esta fazendo agora dentro do for?

 

Sim, se for apenas um campo de upload ele salva normalmente, agora se tiver mais de 1 dá erro:

 

Erro de tempo de execução do Microsoft VBScript erro '800a01c9'

 

Esta tecla já está associada com um elemento desta coleção

 

/intranet/sgi/lib/funcoes.asp, line 874

Compartilhar este post


Link para o post
Compartilhar em outros sites

 

você arrumou a situação do Insert? esta fazendo agora dentro do for?

 

Sim, se for apenas um campo de upload ele salva normalmente, agora se tiver mais de 1 dá erro:

 

Erro de tempo de execução do Microsoft VBScript erro '800a01c9'

 

Esta tecla já está associada com um elemento desta coleção

 

/intranet/sgi/lib/funcoes.asp, line 874

 

Ae rapaziada, resolvido o problema.

Vou postar o código, pra caso alguém precise de algo parecido, valew a ajuda.

 

 

<!--#include file="inc_cab.asp" -->
<%
Call Log("lst_edi_lge.asp","3")
		
		
		'///////////////////////////////////////////////////////////////
		Dim uploadsDirVar
		uploadsDirVar = "c:\Inetpub\wwwroot\intranet\doc_mot" 
		'///////////////////////////////////////////////////////////////
		
		'/////////////////////////////////////////////////////////////////////////////////////////////////////
		' INSERE REGISTRO E REALIZA UPLOAD
		'/////////////////////////////////////////////////////////////////////////////////////////////////////
		QTD = request("CDQTD")
		
function SaveFiles
	
		Dim Upload, fileName, fileSize, ks, i, fileKey, fso
		
		Set fso = CreateObject("Scripting.FileSystemObject")
		Set Upload = New FreeASPUpload
		
		Upload.Save(uploadsDirVar)
		
		If Err.Number <> 0 then Exit function
		
			'/////////////////////////////////////////////////////////////////////////////////////////////////////
			' GRAVA MOTORISTA
			'/////////////////////////////////////////////////////////////////////////////////////////////////////
			Query = "INSERT INTO MOTORISTA "_
					&"("_
					&"CDMOTORISTASMK "_
					&") VALUES( "_
					&"'" & Upload.Form("CDMOTORISTASMK") & "' "_
					&")"
			
			Conn.Execute Query
			'/////////////////////////////////////////////////////////////////////////////////////////////////////
			' FIM - GRAVA MOTORISTA
			'/////////////////////////////////////////////////////////////////////////////////////////////////////
			'/////////////////////////////////////////////////////////////////////////////////////////////////////
			' CONSULTA ULTIMO ID
			'/////////////////////////////////////////////////////////////////////////////////////////////////////
			Query = "SELECT MAX(CDMOTORISTA) AS CDMOTORISTA FROM MOTORISTA"
			Set  rsConsultaMotorista= Conn.Execute(Query)
			CDMOTORISTA = rsConsultaMotorista("CDMOTORISTA")
			'/////////////////////////////////////////////////////////////////////////////////////////////////////
			' FIM - CONSULTA ULTIMO ID
			'/////////////////////////////////////////////////////////////////////////////////////////////////////
		
		
					SaveFiles = ""
					ks = Upload.UploadedFiles.keys
					if (UBound(ks) <> -1) then
						SaveFiles = "<B>Files uploaded:</B> "
						X = 1
						for each fileKey in Upload.UploadedFiles.keys
							SaveFiles = SaveFiles & Upload.UploadedFiles(fileKey).FileName & " (" & Upload.UploadedFiles(fileKey).Length & "B) "
							nomeArquivo = Upload.UploadedFiles(fileKey).FileName
							
							 fso.MoveFile "c:\Inetpub\wwwroot\intranet\doc_mot\"&nomeArquivo&"", "c:\Inetpub\wwwroot\intranet\doc_mot\"&CDMOTORISTA&"_"&nomeArquivo&""
							
		
								DTTRANSMISSAO = month(now())&"-"&day(now())&"-"&year(now())
			
								Query = "INSERT INTO MOTORISTADOCUMENTO "_
											&"("_
											&"CDMOTORISTA, "_
											&"CDTPDOC, "_
											&"NOIMAGEM, "_
											&"DTTRANSMISSAO "_
											&") VALUES( "_
											&"'" & CDMOTORISTA & "', "_ 
											&"'" & Upload.Form("CDTPDOC_" & X) & "', "_ 
											&"'" & CDMOTORISTA &"_"&nomeArquivo & "', "_
											&"'" & DTTRANSMISSAO & "' "_
											&")"
								Conn.Execute Query
						
						X = X + 1			
						next
								
						Call MandaMsg("Arquivo importado com sucesso!",False)
						Call Redireciona("frm_ope_doc_mot.asp")

						
					else
						SaveFiles = "Nome de arquivo inválido."
					end if			
				
end function
		
		Dim diagnostics
		if Request.ServerVariables("REQUEST_METHOD") <> "POST" then
			diagnostics = TestEnvironment()
			if diagnostics<>"" then
				response.write diagnostics
				response.write "<p>After you correct this problem, reload the page."
			end if
		else
		
			response.write SaveFiles()
			
		end if
		
		'/////////////////////////////////////////////////////////////////////////////////////////////////////
		' FIM - INSERE REGISTRO E REALIZA UPLOAD
		'/////////////////////////////////////////////////////////////////////////////////////////////////////


%>
<script type="text/javascript">
<!-- FUNÇÃO Nº DE DOCS
  var alterado = false;

function verificar(){
      alterado = true;
 
  if(alterado == true){
     window.location.href ='frm_ope_doc_mot.asp?CDQTD='+document.getElementById("CDQTSDOCS").value+'&CDMOTORISTASMK='+document.getElementById("CDMOTORISTASMK").value;
	 
  }
}
//-->
</script>

    <div id="geralMenu">
        <div id="conteudoGeral">
            <div id="conteudo">
                <!--#include file="inc_men.asp"-->
              <div id="corpo">
                  <div id="corpoMain">
                    <div class="moduloInterno">
                      <h4>Operacional > Contrato Motorista</h4>
                      <div id="breadcrumb">
                        <h6>
                        <a href="pag_pri.asp" title="Ir para a página princiapl">Principal</a> -Upload </h6>
                        <span> <a href="javascript:history.go(-1)" title="Back to previous page">< Voltar</a> </span> </div>
                     
					  <div class="formBox">
					  <form name="frm" id="frm" method="post" action="frm_ope_doc_mot.asp" enctype="multipart/form-data" >
                                        <div class="formBox_main">
                          <label class="l2"> <span class="label">Código SMK:</span>
                          
                          <input type="text" class="textpp" name="CDMOTORISTASMK" id="CDMOTORISTASMK"  value="<%=REQUEST("CDMOTORISTASMK")%>"  style="width:300px;"/>

                             
                          </label>
                           
                      <label class="l2" style="width:100px;"></label><label class="l2" style="width:620px;"></label>   
                      
                        <label class="l2"> <span class="label">Quantidade de documentos:</span><span class="texto4">
						  <select name="CDQTSDOCS" id="CDQTSDOCS" style="width:109px"  onChange="verificar()">
                            <option value="0">Selecione...</option>
                            
                            <%
							consulta = "select count(*) as ct from TIPO_DOCUMENTO"
							Set rsConsulta = Conn.Execute(consulta)
										
							while not rsConsulta.EOF
								For ctConsulta = 0 To rsConsulta.Fields.Count - 1
									ctDoc = rsConsulta("ct")
								next
								rsConsulta.MoveNext
							wend 
							
								ctD = 1
								while ctD <= ctDoc
									
									IF CiNT(REQUEST("CDQTD")) = CiNT(ctD) THEN
										SELECTED = "SELECTED"
									ELSE
										SELECTED = ""
									END IF
									
									response.Write("<option value="&ctD&" "&SELECTED&">"&ctD&"</option>")
									
								ctD = ctD + 1
								wend
							%>
                            
                          </select>
						  </span></label>

                         <label style="width:600px">
                        
						  <%
						  if request("CDQTD") <> "" then
						  %>
                            <h5>Upload da Imagem </h5>
                            <%
                          
						  	ct = 1
						  	while ct <= cInt(request("CDQTD"))
						  %>
                          
                            <label> <span class="label">Tipo de Documento:</span>
                         
                         <select name="CDTPDOC_<%=ct%>" id="CDTPDOC_<%=ct%>" style="width:90px;height:25px" >
                            <option value="0">Selecione...</option>
                            
                            
                            	<%
								consultaTP = "select CDTPDOC, NODOC from TIPO_DOCUMENTO"
								set rsconsultaTP = conn.Execute(consultaTP)
								while not rsconsultaTP.EOF
									
									if (cDbl(Request("CDTPDOC")) = cDbl(rsconsultaTP("CDTPDOC"))) then
										SELECTED = "SELECTED"
									else
										SELECTED = ""
									end if
									
									response.Write("<option value="&rsconsultaTP("CDTPDOC")&" "&SELECTED&">"& rsconsultaTP("NODOC") & "</option>")
								rsconsultaTP.MoveNext
								wend
								%>
                            
                           
                          </select>

                          
                          <input name="attach1_<%=ct%>" type="file" size="30" class="textp" >
                          
                         
                        </label>
                          <%
						  ct = ct + 1
						 wend
						%>
                         <br>
						 <label>
                           <input name="INCLUIR" type="hidden" id="INCLUIR" value="1" />
                         <input type="submit" name="upload" value="UPLOAD" id="upload" class="blueButton largeBtn1" /></label></label>
                        
                        <%						  
						  end if
						  %>

                        </div>
                        <br>
                         
                       
						</form>
                      </div>
                      <p class="qtdReg"><span class="btnPlace">
                      <form name="frm" id="frm" action="frm_hel_usu.asp">	
	
	
</div>
    </div>
	</form><span class="btnPlace">    </span></div>
	<label> <a href="lst_hel_csv.asp"></a> </label>
	  </div>
	  
	</div>
</div>
<!--#include file="inc_rod.asp" -->

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.