Dundas Upload
Control 2.0
O Dundas
Upload Control é um componente que
permite que você salve e manipule arquivos carregados para o servidor
via browser (sem precisar ficar fazendo FTP, etc).
Ele é designado para ser usado com
o ASP (Active Server Pages) que são hospedados
no Microsoft IIS (Internet Information Sever).
Como
usar o Dundas Upload.
Siga esses passos quando usar o
Dundas Upload Control.
1- Tenha certeza de que o formulário que está afixando (POSTING) o arquivo, está usando um EncType
de Multipart/Form-Data.
Você também precisará usar elementos para inclusão do arquivo (<input type=file>) nesse formulário, assim você poderá procurar
o arquivo que se deseja carregar no servidor.
2- Habilitar o identificador de erro na página que esta sendo afixada
com On Error Resume Next
3-
Crie uma instância do Dundas Upload Control na página em que está
sendo afixada. Para isso use o método Server.CreateObject com um ProgID Dundas.Upload ou Dundas.Upload.2.
4- Carregue os arquivos no servidor com os métodos Save ou SavetoMemory.
Alternativamente você pode carregar arquivos incrementalmente
usando o método GetNextFile.
5- Obtenha qualquer informação do formulário através da coleção do formulário
(Form collection).
Note que formulários vazios não serão inseridos na coleção, e a tentativa
de obter valores de um formulário vazio resultará em um erro (que
poderá ser capturada depois).
6- Manipule arquivos salvos no disco ou na memória com a colecao de arquivos (Files
collection). Essa coleção é preenchida
com dados depois do método Save ou Save
toMemory. Quando
o arquivo é carregado um por vez, pelo objeto Next File, a coleção
é preenchida com um arquivo por vez.
7- Coloque o objeto Upload para nothing.
Propriedades
do objeto Dundas Upload
Control
CheckMacBinary
|
Você pode selecionar essa
propriedade para TRUE antes de carregar o arquivo, assim cada
arquivo será checado por um formato MacBinary.
|
MaxFileCount
|
O número máximo de arquivos
que podem ser carregados.
|
MaxFileSize
|
O tamanho máximo de qualquer
arquivo a ser carregado. (em bytes)
|
MaxUploadSize
|
O tamanho máximo de dados
que pode ser carregado para o servidor (em bytes). Isso inclui
os dados do formulário também.
|
ProgressID
|
Defina essa propriedade com
o unique ID (obtido pelo componente Upload
Process do Dundas
State Server) quando estiver fazendo um upload com uma janela de barra de progressão.
|
StateServer
|
Defina essa propriedade com
o endereço IP do Dundas State
Server quando estiver fazendo um upload
com uma janela de barra de progressão.
|
StateServerPort
|
Defina essa propriedade com
a porta em que o StateServer
está esperando quando estiver fazendo um upload
com uma janela de barra de progressão.
|
UseUniqueNames
|
Guarda arquivos carregados
com nomes únicos. Isso é feito colocando um GUID na frente do
nome do arquivo e _.
|
UseVirtualDir
|
Set essa propriedade para
TRUE para o diretório virtual ser usado. Se TRUE, então qualquer
método que utiliza o argumento Path
deverá usar o caminho do diretório virtual e não o caminho do
diretório físico.
|
|
|
Collection Properties
|
|
Files
|
Coleção
de objetos Uploaded Files, cada um representa
um arquivo carregado de uma página html
com formulário.
|
Form
|
Coleção de objetos Formitem,
com cada objeto representando um elemento do form.
Note que os elementos input do tipo de arquivo (<input
type=file>) não são representados
na coleção de formulário.
|
Métodos
do objeto Dundas Upload
Control
DirectoryCreate
|
Cria um diretório.
|
DirectoryDelete
|
Apaga um diretório.
|
DirectoryExists
|
Checa se o diretório existe.
|
FileCopy
|
Copia um arquivo de um lugar
para outro.
|
FileDelete
|
Apaga um arquivo específico..
|
FileExists
|
Checa se um arquivo específico
existe.
|
FileMove
|
Move um arquivo de um lugar
para outro.
|
GetFileDirName
|
Chame esse método para extrair
o nome do diretório de um caminho de diretório específico.
|
GetFileExt
|
Chame esse método para extrair
a extensão do arquivo de um caminho de diretório específico.
|
GetFileName
|
Chame esse método para extrair
o nome do arquivo de um caminho de diretório específico.
|
GetNextFile
|
Usado para obter informações
do formulário incrementalmente, esse
método retorna objetos NextFile.
|
GetUniqueName
|
Esse método retorna um GUID.
Útil quando grava arquivos com nomes únicos.
|
ImpersonateUser
|
Chame esse método para utilizar
temporariamente uma conta do Windows, diferente do padrão. (usualmente
a conta IUSR)
|
ImpersonationTerminate
|
Chame esse método para reverter
para o usuário padrão, depois de ter usado o método ImpersonateUser.
|
RegisterServer
|
Chame esse método para registrar
um componente COM.
|
Save
|
Salva arquivos carregados
para o disco e preenche as coleções Form
e Files do Upload
Control.
|
SaveToMemory
|
Salva toda a informação do
formulário (inclusive arquivos e valores de elementos do formulario)
para a memória. Esse método também preenche as coleções Files
e Form.
|
SendBinary
|
Chame esse método para fazer
download de arquivos do servidor.
|
Quick Start
O código a seguir demonstra como
preencher as coleções do Upload control,
salvar arquivos carregados no disco e obter dados do formulário. Note
que, não fazermos nenhuma checagem de erro.
Nós assumimos que um formulário
com encoding type of "Multipart/Form-Data" está afixando na página ASP que
contém o seguinte código:
<%@ Language=VBScript %>
<%
'a
maioria dos métodos de controle, lançam uma exceção se um erro ocorre,
então usaremos a expressão
' On Error Resume
Next
On Error Resume
Next
'cria
a instância do Upload control
Set objUpload =
Server.CreateObject("Dundas.Upload.2")
'Salva arquivos
carregados para o disco. Note que poderíamos também salvar na memória
' Isso preenche as coleções de arquivos e de formulário.
objUpload.Save "c:\temp\"
'Obtém o valor
de um elemento do formulário chamado txtName
strName = objUpload.Form("txtName")
'Obtém o tamanho
do primeiro arquivo carregado
strSize = objUpload.Files(0).Size
'Libera os recursos.
Set objUpload
= Nothing
%>
Mais um
exemplo:
Arquivo
form_upload.asp
<HTML>
<HEAD>
<TITLE>WebNOW - UpLoad Com Dundas UpLoad</TITLE>
</HEAD>
<BODY> <!--
Neste tutorial nós estaremos utilizando o Objeto Dundas Upload
(encontrado em http://www.dundas.com), demos preferência ao
Dundas por ser gratuito e fácil de se manipular.
Antes de mais nada baixe o componente do site e instale-o na máquina
que processará os fontes ASP. O máximo que terá
que fazer para instala-lo é clicar em Next.
Nós iniciaremos criando um formulário e a partir dele
enviaremos os anexos para o servidor e o gravaremos no local que determinarmos.
Vamos ao código comentado!
Antes de testarmos os fontes fique atento se o seu PWS ou IIS estão
configurados de forma que de acesso de escrita na pasta onde serão
salvos os arquivos carregados pelo UpLoad. Caso contrário aparecerá
o erro Preste atenção a linha do <form... onde esta
ENCTYPE="multipart/form-data" essa linha determina ao Browser
que os arquivos serão carregados para o servidor e o ASP com
o objeto do Dundas tratarão de salva-lo num local determinado.
(veremos isso na página grava_anexo.asp, mais a baixo.)
A baixo será montado o formulário para o anexo dos arquivos
-->
<b><form ENCTYPE="multipart/form-data" method="post"
action="grava_anexo.asp">
<table width="100%" border="0">
<tr>
<td> <font face="Verdana, Arial, Helvetica, sans-serif"
size="2">Anexo 1:
<input type="file" value="Anexo" name="file">
</font></td>
</tr>
<tr>
<td><font face="Verdana, Arial, Helvetica, sans-serif"
size="2"> Anexo 2:
<input type="file" value="Anexo" name="file2">
</font></td>
</tr>
<tr>
<td><font face="Verdana, Arial, Helvetica, sans-serif"
size="2"> Anexo 3:
<input type="file" value="Anexo" name="file3">
</font></td>
</tr>
</table>
<input type="submit" value="Enviar" name="submit"
onClick="">
</form>
</BODY>
</HTML></b>
<!--Fim do form_upload.asp-->
Arquivo
grava_anexo.asp
<%
'Início de grava_anexo.asp
'Utilizaremos
a função On Error Resume Next para ignorar qualquer
erro que possa vir a acontecer, e posteriormente iremos identifica-lo
e só então comunicarmos ao usuário.
On Error Resume Next
Response.Write
"<HTML><HEAD><TITLE>WebNOW - UpLoad com Dundas
UpLoad</TITLE></HEAD><BODY>"
Dim objUpload
'Cria uma instancia do objeto Upload e atribui a variável objUpload.
Set objUpload = server.CreateObject("Dundas.Upload.2")
'Determinamos
True em UseVirtualDir para que possamos utilizar o caminho virtual.
objUpload.UseVirtualDir = True
'Determinamos
False em UseUniqueNames para que o arquivo nao mude de nome.
objUpload.UseUniqueNames = False
'Utilizamos
o caminho virtual que determina onde serão salvos os arquivos
carregados.
objUpload.Save "/image"
'INFORMAÇÕES
DO ARQUIVO CARREGADO
'loop through all uploaded files, and output their Content Type
For Each objUploadedFile in objUpload.Files
Response.Write("content Type: " & objUploadedFile.ContentType
& "<br>")
Next
'loop
through all uploaded files, and output their Original Path
For Each objUploadedFile in objUpload.Files
Response.Write("Original Path: " & objUploadedFile.OriginalPath
& "<br>")
Next
'Informação para o caminho físico em que o arquivo
foi carregado
'loop through all uploaded files, and output their Path
For Each objUploadedFile in objUpload.Files
Response.Write("Path: " & objUploadedFile.Path &
"<br>")
Next
'loop through all uploaded files, and output their size in bytes
For Each objUploadedFile in objUpload.Files
Response.Write("Size: " & objUploadedFile.Size &
"<br>")
Next
'loop
through all uploaded files, and output their tagname
For Each objUploadedFile in objUpload.Files
Response.Write("TagName: " & objUploadedFile.TagName
& "<br>")
Next
'Limpa a instância criada na memória do servidor.
Set objUpload = nothing
'Aqui
nós verificaremos se ocorreu algum tipo de erro com os dados
carregados. O objeto Err guarda o último erro, caso nenhum
erro tenha ocorrido o objeto conterá o valor 0 (zero) com isso
podemos verificar o valor do objeto e determinarmos qual mensagem
será dada ao usuário.
If Err <> 0 Then
'Aqui
estamos imprimindo na tela do usuário a descrição
do erro e seu número.
Response.Write Err.Description & " " & Err.Number
& "<br>"
Response.Write "<font face=Verdana, Arial, Helvetica, sans-serif
size=2><b>Houve erro(s) ao carregar o(s) arquivo(s) anexado(s)!<br><a
href=javascript:history.back(-1)>Voltar</a> </b></font>"
Else
'Se o objeto Err for igual a 0 será apresentado a mensagem
de sucesso e os dados estarão salvos no caminho determinado
acima
Response.Write "<font face=Verdana, Arial, Helvetica, sans-serif
size=2><b>Seus dados foram carregados com sucesso!</b></font><br>"
'Response.Write
Path
End If
Response.Write "</BODY></HTML>"
'Fim de grava_anexo.asp
%>
