Ir para conteúdo

POWERED BY:

Arquivado

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

Luis Alberto Cabús

[Resolvido] Dundas upload - Selecionar pasta para gravar arquivos

Recommended Posts

Olá Pessoal,

 

Antes eu utilizava upload sem componentes, mas agora o tamanho das imagens do upload aumentou e o sem componente tem limite de tamanho(hospedado no igempresas). Então eles me informaram que tem instalado lá o Dundas Upload 2. Ok, fui atrás do código, pesquisei bastante e achei solução para upload.

 

Só que o detalhe é o seguinte, no sem componentes, no form, eu colocava um listbox pra o cara escolher a pasta que iria o arquivo upado. E recuperava o nome da pasta nas funcoes de upload e entao ficava dinamico.

 

No Dundas, não estou conseguindo recuperar os campos do Form (no caso o nome da pasta de destino do arquivo) antes de salvar o arquivo em alguma pasta. Então não estou conseguindo escolher a pasta de maneira dinâmica.

 

Abaixo eu descrevo primeiro os códigos do upload sem componentes escolhendo a pasta, que eu utilizava e depois descrevo os códigos que agora uso no dundas upload.

 

Obrigado!!

 

 

Form do upload sem componentes (upload.asp)

<html>
<head>
<title>Ambiente Intranet</title>
</head>
<LINK href="estilox.css" type=text/css rel=stylesheet>
<body>
<table width="790" border="0" cellpadding="0" cellspacing="0" class="input_pa">
  <tr>
	<td width="790"><table width="780" border="0" align="center" cellpadding="1" cellspacing="1" class="input_padrao">
	  <tr>
		<td width="50%"> </td>
		<td><p align="right"> </p></td>
	  </tr>
	</table>
		<br>
		<table width="780" border="0" align="center" cellpadding="1" cellspacing="1" class="input_pa">
		  <tr>
			<td width="147" bgcolor="#F9F9F9" class="input_padrao"><p align="center"><a href="a_vitrine_admin.asp" class="input_pa">Vitrine</a></p></td>
			<td width="10"> </td>
			<td width="10"> </td>
			<td> </td>
			<td width="10"> </td>
			<td width="10"> </td>
			<td width="10"> </td>
			<td width="10"> </td>
			<td width="10"> </td>
			<td> </td>
		  </tr>
		</table>
	  <br>
	  <form name="form1" action="upload_funcoes.asp" method="post" enctype="multipart/form-data">
<table width="780" border="0" align="center" cellpadding="1" cellspacing="1" class="input_padrao">
<tr>
  <td colspan="2"><p><b>Instruções:</b></p>
	  <ol>
		<li>O tamanho do arquivo não deve exceder 200kb para Imagens Grandes e 30kb para Fotos de Capa e Miniaturas,. </li>
		<li>As dimensões devem ser de 120x80 para Foto de Capa, 574x385 para Imagens Grandes e 90x60 para Miniaturas..</li>
		<li>Os arquivos de fotos devem ter formato .jpg </li>
	  </ol>
	  <p><br>
		Selecione o tipo de arquivo e pressione o botão PROCURAR para localizar o arquivo: </p></td>
  </tr>
<tr>
  <td width="110">Tipo do arquivo: </td>
  <td width="661"><select name="pastadestino" class="input_pa" id="pastadestino">
  <option selected>Selecione a pasta</option>
  <option value="../icones">Foto de Capa (120x80)</option>
  <option value="../thumbs">Miniaturas (90x60)</option>
  <option value="../largeimages">Imagens Grandes (574x385)</option>
  <option value="../vitrine">Arquivo Vitrine (fotoN.xml)</option>
  </select></td>
</tr>
<tr>
  <td>Caminho do arquivo:</td>
  <td><input name="foto" type="file" class="input_pa" id="foto" size="80" /></td>
</tr>
<tr>
<td> </td>
<td><input name="submit" type="submit" class="input_pa" value="Enviar" /></td>
</tr>
</table>
</form>
	  <br>
		<table width="780" border="0" align="center" cellpadding="1" cellspacing="1" class="input_padrao">
		  <tr>
			<td width="50%"> </td>
			<td><p align="right"> </p></td>
		  </tr>
	  </table></td>
  </tr>
</table>
</body>
</html>

 

 

Código das funções sem componentes (upload_funcoes.asp):

<!-- #include file = "upload_funcoes2.asp" -->
<%
' Chamando Funções, que fazem o Upload funcionar
byteCount = Request.TotalBytes
RequestBin = Request.BinaryRead(byteCount)
Set UploadRequest = CreateObject("Scripting.Dictionary")
BuildUploadRequest RequestBin

' Recuperando a pasta destino ----------------------
pastadestino = UploadRequest.Item("pastadestino").Item("Value")

' Tipo de arquivo que esta sendo enviado
tipo_foto = UploadRequest.Item("foto").Item("ContentType")

' Caminho completo dos arquivos enviados
caminho_foto = UploadRequest.Item("foto").Item("FileName")

' Nome dos arquivos enviados
nome_foto = Right(caminho_foto,Len(caminho_foto)-InstrRev(caminho_foto,"\"))

' Conteudo binario dos arquivos enviados
foto = UploadRequest.Item("foto").Item("Value")

' pasta onde as imagens serao guardadas
pasta = Server.MapPath(""& pastadestino &"/")
nome_foto = "/"&nome_foto

' pasta + nome dos arquivos
'cfoto = "imagens/lojas" + nome_foto

' Fazendo o Upload do arquivo selecionado
if foto <> "" then
Set ScriptObject = Server.CreateObject("Scripting.FileSystemObject")
Set MyFile = ScriptObject.CreateTextFile(pasta & nome_foto)
For i = 1 to LenB(foto)
MyFile.Write chr(AscB(MidB(foto,i,1)))
Next
MyFile.Close
end if


' Mostra Mensagem de Confirmação na Tela
Response.write "Dados Cadastrados com Sucesso!<br>"
Response.Write "A imagem <b>"& nome_foto &"</b> foi guardada em <b>"& pastadestino &"</b>"
' Redireciona após 5 segundos
Response.write "<br><br>você será redirecionado em 5 segundos..<br>"
Response.write "<meta http-equiv='refresh' content='2; url=upload.asp'/>"
%>

 

 

Código das funções sem componentes (upload_funcoes2.asp):

<%
' Upload Sem componentes ---------------------------------------
Sub BuildUploadRequest(RequestBin)
on error resume next

PosBeg = 1
PosEnd = InStrB(PosBeg, RequestBin, getByteString(Chr(13)))
boundary = MidB(RequestBin, PosBeg, PosEnd - PosBeg)
BoundaryPos = InStrB(1, RequestBin, boundary)

Do Until (BoundaryPos = InStrB(RequestBin, boundary & getByteString("--")))

Dim UploadControl
Set UploadControl = CreateObject("Scripting.Dictionary")

Pos = InStrB(BoundaryPos, RequestBin, getByteString("Content-Disposition"))
Pos = InStrB(Pos, RequestBin, getByteString("name="))
PosBeg = Pos + 6
PosEnd = InStrB(PosBeg, RequestBin, getByteString(Chr(34)))
Name = getString(MidB(RequestBin, PosBeg, PosEnd - PosBeg))
PosFile = InStrB(BoundaryPos, RequestBin, getByteString("filename="))
PosBound = InStrB(PosEnd, RequestBin, boundary)

If PosFile <> 0 And (PosFile < PosBound) Then
PosBeg = PosFile + 10
PosEnd = InStrB(PosBeg, RequestBin, getByteString(Chr(34)))
FileName = getString(MidB(RequestBin, PosBeg, PosEnd - PosBeg))
UploadControl.Add "FileName", FileName
Pos = InStrB(PosEnd, RequestBin, getByteString("Content-Type:"))
PosBeg = Pos + 14
PosEnd = InStrB(PosBeg, RequestBin, getByteString(Chr(13)))
ContentType = getString(MidB(RequestBin, PosBeg, PosEnd - PosBeg))
UploadControl.Add "ContentType", ContentType
PosBeg = PosEnd + 4
PosEnd = InStrB(PosBeg, RequestBin, boundary) - 2
Value = MidB(RequestBin, PosBeg, PosEnd - PosBeg)
Else
Pos = InStrB(Pos, RequestBin, getByteString(Chr(13)))
PosBeg = Pos + 4
PosEnd = InStrB(PosBeg, RequestBin, boundary) - 2
Value = getString(MidB(RequestBin, PosBeg, PosEnd - PosBeg))
End If

UploadControl.Add "Value", Value
UploadRequest.Add Name, UploadControl
BoundaryPos = InStrB(BoundaryPos + LenB(boundary), RequestBin, boundary)
Loop
End Sub

Function getByteString(StringStr)
For i = 1 To Len(StringStr)
Char = Mid(StringStr, i, 1)
getByteString = getByteString & ChrB(AscB(Char))
Next
End Function

Function getString(StringBin)
getString = ""
For intCount = 1 To LenB(StringBin)
getString = getString & Chr(AscB(MidB(StringBin, intCount, 1)))
Next
End Function

' Fim upload sem Componentes -----------------------------------------
%>

 

 

 

Agora descritos os códigos novos que preciso utilizar com o Dundas:

Form.asp

<html>
<head>
<title>Ambiente Intranet</title>
</head>
<LINK href="estilox.css" type=text/css rel=stylesheet>
<body>
<table width="790" border="0" cellpadding="0" cellspacing="0" class="input_pa">
  <tr>
	<td width="790"><table width="780" border="0" align="center" cellpadding="1" cellspacing="1" class="input_padrao">
	  <tr>
		<td width="50%"> </td>
		<td><p align="right"> </p></td>
	  </tr>
	</table>
		<br>
		<table width="780" border="0" align="center" cellpadding="1" cellspacing="1" class="input_pa">
		  <tr>
			<td width="147" bgcolor="#F9F9F9" class="input_padrao"><p align="center"><a href="a_vitrine_admin.asp" class="input_pa">Vitrine</a></p></td>
			<td width="10"> </td>
			<td width="10"> </td>
			<td> </td>
			<td width="10"> </td>
			<td width="10"> </td>
			<td width="10"> </td>
			<td width="10"> </td>
			<td width="10"> </td>
			<td> </td>
		  </tr>
		</table>
	  <br>
	  <form name="form1" action="codigodundas.asp" method="post" enctype="multipart/form-data">
<table width="780" border="0" align="center" cellpadding="1" cellspacing="1" class="input_padrao">
<tr>
  <td colspan="2"><p><b>Instruções:</b></p>
	  <ol>
		<li>O tamanho do arquivo não deve exceder 200kb para Imagens Grandes e 30kb para Fotos de Capa e Miniaturas,. </li>
		<li>As dimensões devem ser de 120x80 para Foto de Capa, 574x385 para Imagens Grandes e 90x60 para Miniaturas..</li>
		<li>Os arquivos de fotos devem ter formato .jpg </li>
	  </ol>
	  <p><br>
		Selecione o tipo de arquivo e pressione o botão PROCURAR para localizar o arquivo: </p></td>
  </tr>
<tr>
  <td width="110">Tipo do arquivo: </td>
  <td width="661"><select name="pastadestino" class="input_pa" id="pastadestino">
  <option selected>Selecione a pasta</option>
  <option value="/icones/">Foto de Capa (120x80)</option>
  <option value="/thumbs/">Miniaturas (90x60)</option>
  <option value="/largeimages/">Imagens Grandes (574x385)</option>
  <option value="/vitrine/">Arquivo Vitrine (fotoN.xml)</option>
  </select></td>
</tr>
<tr>
  <td>Caminho do arquivo:</td>
  <td><input name="file" type="file" class="input_pa" id="file" size="80" /></td>
</tr>

<tr>
<td> </td>
<td><input name="submit" type="submit" class="input_pa" value="Enviar" /></td>
</tr>
</table>
</form>
	  <br>
		<table width="780" border="0" align="center" cellpadding="1" cellspacing="1" class="input_padrao">
		  <tr>
			<td width="50%"> </td>
			<td><p align="right"> </p></td>
		  </tr>
	  </table></td>
  </tr>
</table>
</body>
</html>

 

 

 

E o código dundas para upload (codigodundas.asp):

p.s.: Se eu utilizo o código dessa maneira ele responde o campo do formulário

<% 
Dim objUpload, tamanhomax, pasta
Set objUpload = Server.CreateObject("Dundas.Upload.2")

'Seta o tamanho máximo em KB
tamanhomax = 1.5
tamanhomax = 1000000 * tamanhomax
objUpload.MaxFileSize = tamanhomax
objUpload.UseVirtualDir = True
objUpload.UseUniqueNames = False

'Pasta onde salva os arquivos enviados (começando do diretorio principal)
objUpload.Save "/icones/"

'Buscar dados do formulario
pasta = objupload.form("pastadestino")

'Destrói o objeto
Set objUpload = Nothing

Response.Write ""& pasta &"<br>"
Response.Write "Upload efetuado com sucesso"
%>

 

 

Mas eu precisava que ele me respondesse o campo da pasta destino antes, para que eu pudesse utilizar como fazia no upload sem formularios...

No caso, eu queria que funcionasse assim:

<% 
Dim objUpload, tamanhomax, pasta
Set objUpload = Server.CreateObject("Dundas.Upload.2")

'Buscar dados do formulario
pasta = objupload.form("pastadestino")

'Seta o tamanho máximo em KB
tamanhomax = 1.5
tamanhomax = 1000000 * tamanhomax
objUpload.MaxFileSize = tamanhomax
objUpload.UseVirtualDir = True
objUpload.UseUniqueNames = False

'Pasta onde salva os arquivos enviados (começando do diretorio principal)
objUpload.Save ""& pasta &""

'Destrói o objeto
Set objUpload = Nothing

Response.Write " O arquivo foi salvo na pasta "& pasta &"<br>"
Response.Write "Upload efetuado com sucesso"
%>

 

Mas como querer nem sempre é poder, preciso da ajuda de vocês!!

 

Alguem consegue ajudar???

 

MUITO OBRIGADO!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

coloque apenas

 

objUpload.Save pasta

 

sem as aspas

você ñ entendeu.. ! Eu não quero salvar numa pasta que tenha nome fixo, quero salvar numa pasta de nome, cujo nome vai vir do formulário anterior, junto dos arquivos!

 

Tendeu?

Obrigado!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Hoje o dia rendeu.. consegui resolver meu problema de uma maneira bem eficiente. Pra quem futuramente precisar, abaixo o código. Testem para ver como funciona.

Upload de 10 arquivos de uma só vez.

 

Codigo do Formulário:

CODE
<html>

<head>

<title>Ambiente Intranet</title>

</head>

<LINK href="estilox.css" type=text/css rel=stylesheet>

<body>

<table width="790" border="0" cellpadding="0" cellspacing="0" class="input_pa">

<tr>

<td width="790"><table width="780" border="0" align="center" cellpadding="1" cellspacing="1" class="input_padrao">

<tr>

<td width="50%"> </td>

<td><p align="right"> </p></td>

</tr>

</table>

<br>

<table width="780" border="0" align="center" cellpadding="1" cellspacing="1" class="input_pa">

<tr>

<td width="147" bgcolor="#F9F9F9" class="input_padrao"><p align="center"><a href="a_vitrine_admin.asp" class="input_pa">Vitrine</a></p></td>

<td width="10"> </td>

<td width="10"> </td>

<td> </td>

<td width="10"> </td>

<td width="10"> </td>

<td width="10"> </td>

<td width="10"> </td>

<td width="10"> </td>

<td> </td>

</tr>

</table>

<br>

<form name="form1" action="t2.asp" method="post" enctype="multipart/form-data">

<table width="780" border="0" align="center" cellpadding="1" cellspacing="1" class="input_padrao">

<tr>

<td colspan="2"><p><b>Instruções:</b></p>

<ol>

<li>O tamanho do arquivo não deve exceder 200kb para Imagens Grandes e 30kb para Fotos de Capa e Miniaturas,. </li>

<li>As dimensões devem ser de 120x80 para Foto de Capa, 574x385 para Imagens Grandes e 90x60 para Miniaturas..</li>

<li>Os arquivos de fotos devem ter formato .jpg </li>

</ol>

<p><br>

Selecione o tipo de arquivo e pressione o botão PROCURAR para localizar o arquivo: </p></td>

</tr>

<tr>

<td width="110">Tipo do arquivo: </td>

<td width="661"><select name="pastadestino" class="input_pa" id="pastadestino">

<option selected>Selecione a pasta</option>

<option value="icones">Foto de Capa (120x80)</option>

<option value="thumbs">Miniaturas (90x60)</option>

<option value="largeimages">Imagens Grandes (574x385)</option>

<option value="vitrine">Arquivo Vitrine (fotoN.xml)</option>

</select></td>

</tr>

<tr>

<td>Caminho do arquivo:</td>

<td><input name="file" type="file" class="input_pa" id="file" size="80" /></td>

</tr>

<tr>

<td> </td>

<td><input name="file2" type="file" class="input_pa" id="file2" size="80" /></td>

</tr>

<tr>

<td> </td>

<td><input name="file3" type="file" class="input_pa" id="file3" size="80" /></td>

</tr>

<tr>

<td> </td>

<td><input name="file4" type="file" class="input_pa" id="file4" size="80" /></td>

</tr>

<tr>

<td> </td>

<td><input name="file5" type="file" class="input_pa" id="file5" size="80" /></td>

</tr>

<tr>

<td> </td>

<td><input name="file6" type="file" class="input_pa" id="file6" size="80" /></td>

</tr>

<tr>

<td> </td>

<td><input name="file7" type="file" class="input_pa" id="file7" size="80" /></td>

</tr>

<tr>

<td> </td>

<td><input name="file8" type="file" class="input_pa" id="file8" size="80" /></td>

</tr>

<tr>

<td> </td>

<td><input name="file9" type="file" class="input_pa" id="file9" size="80" /></td>

</tr>

<tr>

<td> </td>

<td><input name="file10" type="file" class="input_pa" id="file10" size="80" /></td>

</tr>

 

<tr>

<td> </td>

<td><input name="submit" type="submit" class="input_pa" value="Enviar" />      

<input name="Reset" type="reset" class="input_pa" value="Limpar todos os capmos"></td>

</tr>

</table>

</form>

<br>

<table width="780" border="0" align="center" cellpadding="1" cellspacing="1" class="input_padrao">

<tr>

<td width="50%"> </td>

<td><p align="right"> </p></td>

</tr>

</table></td>

</tr>

</table>

</body>

</html>

 

 

Código da função que o form chama(t2.asp):

CODE
<%

'// Objeto de Upload

Dim ObjUpload, pastadestino

Set ObjUpload = Server.CreateObject("Dundas.Upload.2")

'5mb maximo tamanho

ObjUpload.MaxFileSize = 5120000

ObjUpload.UseUniqueNames = False

ObjUpload.UseVirtualDir = False

objUpload.SaveToMemory

 

pastadestino = ObjUpload.Form("pastadestino").Value

For Each objUploadedFile in objUpload.Files

strPathFile = Server.MapPath("/"& pastadestino &"/")

strArquivo = objUpload.GetFileName(objUploadedFile.OriginalPath)

Set ObjFso = Server.CreateObject("Scripting.FileSystemObject")

objUploadedFile.SaveAs strPathFile &"\"& strArquivo

Set ObjFso = Nothing

Next

Response.Write "Sucesso"

%>

 

 

Detalhe, para funcionar, é preciso que a pasta exista no diretório principal. Ou seja, no meu caso, o site é www.aeiou.com.br, então as pastas que tenho lá são www.aeiou.com.br/icones, www.aeiou.com.br/largeimages, entre outras.

Qualquer dúvida, pode perguntar! Boa sorte aos próximos..

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.