Para fazer upload de arquivos, utilize o componente aspSmartUpload, use como exemplo o seguintes códigos abaixo, alterando-o como desejar:
formexemplo1.htm
<html>
<body>
<form method="post" action="exemplo1.asp" enctype="multipart/form-data">
Arquivo: <input type="file" name="arquivo">
<input type="submit" value="Enviar">
</form>
</body>
</html>
exemplo1.asp
<html>
<body>
<%
Set objUpload = Server.CreateObject("aspSmartUpload.SmartUpload")
objUpload.Upload
objUpload.Save(Server.MapPath("./"))
Response.Write "Arquivo enviado com sucesso!"
%>
</body>
</html>
A seguir veja a função de cada um dos comandos utilizados:
enctype="multipart/form-data" - Esse método de codificação deve ser usado no envio de arquivos. Sem ele, o upload não funciona.
Set objUpload = Server.CreateObject("aspSmartUpload.SmartUpload") - Cria uma instância do componente aspSmartUpload com o nome objUpload.
objUpload.Upload - Entra no modo Upload.
objUpload.Save(Server.MapPath("./")) - Salva todos os arquivos enviados para a pasta indicada: nesse caso é a pasta onde o script está armazenado (Server.MapPath("./")).
Incrementando o código
formexemplo2.htm
<html>
<body>
<form method="post" action="exemplo2.asp" enctype="multipart/form-data">
Arquivo1: <input type="file" name="arquivo1"><br>
Arquivo2: <input type="file" name="arquivo2"><br>
<input type="submit" value="Enviar">
</form>
</body>
</html>
exemplo2.asp
<html>
<body>
<%
Set objUpload = Server.CreateObject("aspSmartUpload.SmartUpload")
objUpload.Upload
For Each File In objUpload.Files
If Not File.IsMissing Then
File.SaveAs(Server.MapPath("./") & File.FileName)
Response.Write("Arquivo <b>" & File.FileName & "</b> ")
Response.Write("(" & File.Size & "Bytes) enviado com sucesso!<br>")
End If
Next
%>
</body>
</html>
A partir do código anterior você pode extrair diversas informações do arquivo, tais como o nome e o tamanho. A principal diferença é que os arquivos são processados individualmente. Confira a seguir a descrição de cada instrução usada para esse recurso. Depois digite os códigos formexemplo2.htm e exemplo2.htm no editor de textos, salve os arquivos na pasta httpdocs do servidor.
For Each File In objUpload.Files - Processa os arquivos individualmente
If Not File.IsMissing Then - Verifica se o usuário selecionou o arquivou ou não.
File.SaveAs(Server.MapPath("./") & File.FileName) - Salva o arquivo no diretório onde este script se encontra com o seu nome original (File.FileName)
No exemplo2.asp os arquivos foram salvos a cada looping da função For Each embora eles também pudessem ser salvos de uma só vez usando o método objUpload.Save. Veja nos códigos exemplo2save.asp e formexemplo2save.htm que estão contidos neste arquivo, contendo todos os exemplos abordados.
Se o formulário enviar apenas um arquivo, também é possível exibir as informações como o método Files.Item(X), aonde X é o número do arquivo. Neste caso, como ele é o único arquivo, ele é 1. como Response.Write objUpload.Files.Item(1).FileName, por exemplo.
Aplicando restrições
Ao permitir que os usuários enviem arquivos ao seu servidor, você deve estar atento ao risco que eles podem apresentar: arquivos .exe podem chegar com vírus e infectar o computador de todos os usuários que dizerem o download. O componente aspSmartUpload resolve esse problema também: nele é possível definir quais os tipos de arquivos que são ou não permitidos sendo que você também pode estabelecer o tamanho máximo que os arquivos enviados podem ter. Parar usar esses recursos, as funções são:
TotalMaxFileSize - Tamanho máximo, em bytes, permitido por envio.
MaxFileSize - Tamanho máximo permitido de cada arquivo enviado.
AllowedFileList - Lista das extensões permitidas.
DeniedFilesList - Lista das extensões não autorizadas.
DenyPhysicalPath - Não permite o acesso a um endereço físico do servidor (por exemplo, C:\Arquivos). Somente aceita caminhos virtuais que ficam localizados dentro da sua pasta Web (por exemplo, /upload).
formexemplo3.htm
<html>
<body>
<form method="post" action="exemplo3.asp" enctype="multipart/form-data">
Arquivo: <input type="file" name="arquivo"><br>
<sup>Somente com a extensão .txt ou .doc e menores que 30KBytes.</sup><br>
<input type="submit" value="Enviar">
</form>
</body>
</html>
exemplo3.asp
<html>
<body>
<%
Set objUpload = Server.CreateObject("aspSmartUpload.SmartUpload")
objUpload.MaxFileSize = 30000
objUpload.AllowedFilesList = "txt,doc"
objUpload.DenyPhysicalPath = True
objUpload.Upload
objUpload.Save(".")
Response.Write("Arquivo enviado com sucesso!")
%>
</body>
</html>
Agora digite os códigos formexemplo3.htm e exemplo3.asp no seu editor de textos e salve na pasta httpdocs do servidor. Tente enviar um arquivo com uma extensão diferente das permitidas ou maior que o tamanho autorizado e confira qual resultado.