Ir para conteúdo

POWERED BY:

Arquivado

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

delgisa

[Resolvido] Upload de vários arquivos e gravar seus nomes no banc

Recommended Posts

Saudações!!!

 

Pessoal, lutei o máximo que pude, já tentei tudo que estava em meu alcance.

É o seguinte:

 

Eu tenho um form que enviar 3 arquivos para uma página de Upload e nesta página de upload tenho um include que trago um arquivo que grava as informações do form bem como o nome dos arquivos.

 

Da forma que está agora, eu consigo fazer os uploads e gravar os dados no banco... PORÉM consigo pegar só o nome do último arquivo do formulário de upload.

Eu quero pegar os nomes dos três arquivos ao mesmo tempo e gravar no banco.

Vejam meus códigos:

 

Formulário:-

cadastro_ctc.asp

<form action="upload.asp" METHOD="POST" ENCTYPE="multipart/form-data" name="contas" > 

		<fieldset>
        	<legend>Cadastro de C.T.C Portaria Nº 154/2008</legend>
            <label>Selecione o Servidor:
              <select name="codtitular" onkeypress="cbboxSearch(this, event); return false;">	
                        <option value="0">Selecione</option>
							<% 
								if not rs.eof then  			
								while not rs.eof
                            %>
                        <option value="<%=rs("codtitular")%>"><%=rs(server.HTMLEncode("nome"))%>-<%=rs(server.HTMLEncode("matricula"))%></option>
							<%
                                rs.Movenext
                                wend
                                end if							
                            %>                         
          </select>
                  </label>                
                    <label>
                    Número da CTC<input type="text" name="numeroctc"/>
            		</label>
        </fieldset>
    	<fieldset>
          <legend>Selecione os Arquivos</legend>
                <label>
                CTC ANEXO I:<span>arquivos .pdf</span><input type="file" name="ENDERECOANEXO1" value="Upload"/>
          		</label>          
                <label>
                CTC ANEXO II:<span>arquivos .pdf</span><input type="file" name="ENDERECOANEXO2" value="Upload"/>
          		</label>          
                <label>
                CTC ANEXO III:<span>arquivos .pdf</span><input type="file" name="ENDERECOANEXO3" value="Upload"/>
          		</label>
		  <input type="submit" value="Upload" >
        </fieldset>
    </form>

Código que faço o upload e chamo o arquivo para gravar os dados que vieram do form

upload.asp

<%

Server.ScriptTimeout=50000
Set Upload = Server.CreateObject ("Persits.Upload")
Upload.ProgressID = Request.QueryString("PID")

' Tamanho do arquivo limite para 50.000 bytes, lançar uma exceção se o arquivo é maior
Upload.SetMaxSize 9900000, True

' Intercept todas as exceções para mostrar erro user-friendly
On Error Resume Next



Count = Upload.Save ("C:\Inetpub\wwwroot\fourinfo.com.br\www\antigo\rpps\ctc\arquivos\")
                                                             

     

' 8 é o número de" Arquivo muito grande "exceção
If Err.Number = 8 Then
   Response.Write "O arquivo é muito grande. Por favor, tente novamente"
Else
   If Err <> 0 Then
      Response.Write "An error occurred: " & Err.Description
   Else
      Response.Write "Success!"
   End If
End If

'Aqui trazemos informações sobre nome do arquivo, endereço e tamanho



For Each File in Upload.Files
Response.Write File.Name & "= " & File.Path & " (" & File.Size &" bytes)<BR>"
dim PegaNomeCampo, urlarquivo
PegaNomeCampo=  File.Path

ENDERECOANEXO1 = Right(PegaNomeCampo, Len(PegaNomeCampo) - InstrRev(PegaNomeCampo,"\"))

Next

%>
<!--#include file="adicionar_ctc.asp"-->

Arquivo que gravo os dados:

adicionar_ctc.asp

<%
'Recupero os dados
codtitular = Upload.Form("codtitular")
numeroctc = Upload.Form("numeroctc")




'Faço a conexão com o bd
cnpath="DBQ=" & Server.MapPath("../dados/dados.mdb") 
DataSource = "Driver={Microsoft Access Driver (*.mdb)}; " & cnpath 
 
Set Conn = Server.CreateObject("ADODB.Connection") 

Conn.Open DataSource

'Adiciono no bd
sqlString= "INSERT INTO ctc (codtitular, numeroctc, ENDERECOANEXO1, ENDERECOANEXO2, ENDERECOANEXO3) VALUES ( "&codtitular&", "&numeroctc&", '"&ENDERECOANEXO1&"', '"&ENDERECOANEXO2&"', '"&ENDERECOANEXO3&"')"

            
Conn.Execute sqlString


<p align="center"><font face="Verdana, Arial, Helvetica, sans-serif" size="2">Notícia 
  adicionada com sucesso.</font></p>
<p align="center"><a href="javascript:window.history.go(-1)"><font face="Verdana, Arial, Helvetica, sans-serif" size="2">Clique 
  aqui para voltar à página inicial</font></a></p>

<%
end if
sqlString.close
%> 

Bom, é isso...

quer puder dar um help, serei mais uma vez muito grato.

 

Abraços

 

Jardel

Compartilhar este post


Link para o post
Compartilhar em outros sites

Opa, você precisa executar a operação de inserir no db dentro do For each... veja:

 

For Each File in Upload.Files

 

<!--#include file="adicionar_ctc.asp"-->

 

Next

 

caso contrário ele so irá pegar msm o ultimo.

 

mete esse include ai entre

abraços

Compartilhar este post


Link para o post
Compartilhar em outros sites

Opa, você precisa executar a operação de inserir no db dentro do For each... veja:

 

For Each File in Upload.Files

 

<!--#include file="adicionar_ctc.asp"-->

 

Next

 

caso contrário ele so irá pegar msm o ultimo.

 

mete esse include ai entre

abraços

 

 

Olá zeke_,

gostei da solução, mas isso travou minha mente, pois tenho 3 campos no banco de dados, com os nomes de ENDERECOANEXO1, ENDERECOANEXO2 e ENDERECOANEXO3.

Como eu faço, pois no código da página upload, que agora ficou asim:

For Each File in Upload.Files
Response.Write File.Name & "= " & File.Path & " (" & File.Size &" bytes)<BR>"
dim PegaNomeCampo, urlarquivo
PegaNomeCampo=  File.Path

ENDERECOANEXO = Right(PegaNomeCampo, Len(PegaNomeCampo) - InstrRev(PegaNomeCampo,"\"))
<!--#include file=adicionar_ctc.asp-->

Next
te confesso que minha cabeça travou....como eu vou conseguir passar este insert que eu faço no banco executando naquele lugar que vocÊ indicou????

 

Desculpe, mas não consegui

Compartilhar este post


Link para o post
Compartilhar em outros sites

Opa, desculpa eu nao observei que você tinha 3 campos diferentes...

 

Imagino que deve ter travado sua cabeça msm.... dps que vi que eram 3 campos a minha tbm travou.. rsrs

 

uma solução bem simples (pode haver até outras mais profissionais por ai) mas que vai resolver seu problema é essa:

 

1- Volta seu include lá prá baixo fora do For Each...

 

2- Dentro do For Each você colola assim:


If ENDERECOANEXO1 = "" Then
ENDERECOANEXO1 = File.ExtractFileName
End if

If ENDERECOANEXO2 = "" Then
ENDERECOANEXO2 = File.ExtractFileName
End if

If ENDERECOANEXO3 = "" Then
ENDERECOANEXO3 = File.ExtractFileName
End if



 

Bom é isso ai... sei que deve estar meio P.O.G. maas acho que resolve seus problemas.... AFINAL UM SIMPLES 'IF' RESOLVE QUASE TUDO!!! RSRS

 

 

Abraços, bom FDS.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Salve zeke_,

 

Quase...

 

efetuando os IFs eu acabo alimentando as trÊs variáveis ao mesmo tempo com o nome do primeiro arquivo que que veio no File.ExtractFileName

 

Pois todos no 1º momento estão vazios... e são alimentados com esse 1º arquivo.

 

Agora estou bolando algo seguindo o seu raciocínio (fazer uma matriz, um case que compare as variáveis, coisa assim)

Se você ou alguém tiver uma idéia, posta aí.

Teria que ser mais ou menos assim:

O meu For Each é executado 3 vezes (pois estou fazendo upload de 3 arquivos)

A 1º vez que passar tem que acontecer isso:

ENDERECOANEXO1=File.ExtractFileName

A 2ª vez que passar, alimentar somente a variável ENDERECOANEXO2

E a 3ª vez que passar, alimentar a variável ENDERECOANEXO3.

 

É isso...

 

Abraços e valeu por enquanto.

Compartilhar este post


Link para o post
Compartilhar em outros sites

qual erro gerado !?!?

existe um exemplo no lab. de script, pode te ajudar

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pessoal, segui o conselho do xanburzum e procurei no lab. de scripts.... encontrei facilmente no meio do código do marciolvs o que eu estqava procurando...

eu substitui esta parte no meu código

Count = Upload.Save ("pasta")

por este no marciolvs:

http://forum.imasters.com.br/index.php?/topic/383558-asp-upload-progress-bar/

Upload.Save pasta        
Set Foto1 = Upload.Files("FILE1")    
Set Foto2 = Upload.Files("FILE2")    
Set Foto3 = Upload.Files("FILE3")
nome_arquivo = Foto1.FileName
nome_arquivo2 = Foto2.FileName
nome_arquivo3 = Foto3.FileName

Assim eu consigo pegar nome por nome no momento do upload....

É isso aí, resolvido!!!

 

Obrigado a todos!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

ok é isso, ai, parabéns

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.