Ir para conteúdo

POWERED BY:

Arquivado

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

razs

upload ftp

Recommended Posts

Viva, tenho um sistema de upload a funcionar bem mas como preciso de fazer upload de ficheiros grandes(300mb-400mb)queria altera-lo para ftp alguem me da uma luz de como converter isto para ftp?

 

<html><head></head><body>
<!-- #include file = "upload_funcoes.asp" -->
<!--#include file="permission.asp"-->
<%
' Chama Funções que fazem o Upload funcionar
byteCount = Request.TotalBytes
RequestBin = Request.BinaryRead(byteCount)
Set UploadRequest = CreateObject("Scripting.Dictionary")
BuildUploadRequest RequestBin


' Recupera os Dados ----------------------
campo1 = UploadRequest.Item("campo1").Item("Value")
campo2 = UploadRequest.Item("campo2").Item("Value")
campo3 = UploadRequest.Item("campo3").Item("Value")
campo4 = UploadRequest.Item("campo4").Item("Value")
campo5 = UploadRequest.Item("campo5").Item("Value")
campo6 = UploadRequest.Item("campo6").Item("Value")
hora= time()
data= date()
utl= Session("user")

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

' Caminho completo dos arquivos enviados
caminho_ficheiro = UploadRequest.Item("ficheiro").Item("FileName")


if campo1="" or campo2="" or campo3="" or campo4="" or campo5="" or campo6="" or tipo_ficheiro="" then
response.redirect "addfiles.asp?erro= All fields are mandatory"
else

' Nome dos arquivos enviados
nome_ficheiro = Right(caminho_ficheiro,Len(caminho_ficheiro)-InstrRev(caminho_ficheiro,"\"))

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

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

' pasta + nome dos arquivos
cficheiro = "upload/" + nome_ficheiro

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

'Conecta-se a base de Dados
set conn = CreateObject("ADODB.Connection")
conn.Provider = "Microsoft.Jet.Oledb.4.0"
   conn.Open Server.MapPath("db/12345678.mdb")
set rs=server.createobject("adodb.recordset")

' insere os dados na base de dados
instotal = "Insert into ficheiros (campo1,campo2,campo3,campo4,campo5,campo6,ficheiro,data_in, username, hora_in) values ('"& campo1 &"', '"& campo2 &"', '"& campo3 &"', '"& campo4 &"', '"& campo5 &"', '"& campo6 &"', '"& cficheiro &"','"& data&"', '"& utl&"', '"& hora&"')"
rs.open instotal,conn,2,2

' Redireciona 
response.redirect = "addfiles.asp?erro=File uploaded sucessfully "

end if
%>
</body></html>

Compartilhar este post


Link para o post
Compartilhar em outros sites

tem um exemplo de FTP que postei no lab. de script, dá uma olhada pode te ajudar e tem opções para fazer isso usando componentes.

Compartilhar este post


Link para o post
Compartilhar em outros sites

viva xanburzum, ja andei a ver, obrigado.

 

 

Nao a hipótese de fazer isto sem componentes?

 

Obrigado

 

Tentei alterar mas nao recebo erro nenhum, a pagina simplesmente fica em branco.

 

 

<%
ftp_address          = "ftp.Jabry.com"
ftp_username         = "user"
ftp_password         = "pass"
ftp_remote_directory = "images/uploads/" 'Deixe em branco se o upload para diretório raiz
ftp_files_to_put     = "*.txt"  

Dim objFSO, objTextFile, oScript, oScriptNet, oFileSys, oFile, strCMD, strTempFile, strCommandResult
Dim ftp_address, ftp_username, ftp_password, ftp_physical_path, ftp_files_to_put

' Recupera os Dados ----------------------

campo1 = request.form("campo1")
campo2 = request.form("campo2")
campo3 = request.form("campo3")
campo4 = request.form("campo4")
campo5 = request.form("campo5")
campo6 = request.form("campo6")
hora=time()
data= date()
utl= Session("user")

'if campo1="" or campo2="" or campo3="" or campo4="" or campo5="" or campo6="" then
'response.redirect "addfiles.asp?erro= All fields are mandatory"
'else


' Nome dos arquivos enviados
nome_ficheiro = Right(caminho_ficheiro,Len(caminho_ficheiro)-InstrRev(caminho_ficheiro,"\"))

' pasta onde as imagens serao guardadas
nome_ficheiro = "/"&nome_ficheiro

' pasta + nome dos arquivos
cficheiro = ftp_remote_directory + nome_ficheiro

' Faz o Upload do arquivo selecionado

On Error Resume Next
Set oScript = Server.CreateObject("WSCRIPT.SHELL")
Set oFileSys = Server.CreateObject("Scripting.FileSystemObject")
Set objFSO = CreateObject("Scripting.FileSystemObject")

Set objTextFile = objFSO.CreateTextFile(Server.MapPath("test.ftp"))
objTextFile.WriteLine "lcd " & Server.MapPath(".")
objTextFile.WriteLine "open " & ftp_address
objTextFile.WriteLine ftp_username
objTextFile.WriteLine ftp_password

'Verifique para ver se precisamos emitir uma' cd 'command
If ftp_remote_directory <> "" Then
  objTextFile.WriteLine "cd " & ftp_remote_directory
End If

objTextFile.WriteLine "prompt"


If Instr(1, ftp_files_to_put, "*",1) Then
  objTextFile.WriteLine "mput " & ftp_files_to_put
Else
  objTextFile.WriteLine "put " & ftp_files_to_put
End If
objTextFile.WriteLine "bye"
objTextFile.Close
Set objTextFile = Nothing
'Cmd.exe Use para executar ftp.exe, parsing comando arquivo recém-criado
strCMD = "ftp.exe -s:" & Server.MapPath("test.ftp")
strTempFile = "C:\" & oFileSys.GetTempName( )
'saída de cmd.exe para um arquivo temporário 
Call oScript.Run ("cmd.exe /c " & strCMD & " > " & strTempFile, 0, True)
Set oFile = oFileSys.OpenTextFile (strTempFile, 1, False, 0)

On Error Resume Next
'Pega a saída do arquivo temporário
strCommandResult = Server.HTMLEncode( oFile.ReadAll )
oFile.Close
'Eliminar os temporários e os arquivos ftp-comando
Call oFileSys.DeleteFile( strTempFile, True )
Call objFSO.DeleteFile( Server.MapPath("test.ftp"), True )
Set oFileSys = Nothing
Set objFSO = Nothing
'Mostra o resultado da sessão de FTP para a tela
Response.Write( Replace( strCommandResult, vbCrLf, "<br>", 1, -1, 1) )

'Conecta-se a base de Dados
set conn = CreateObject("ADODB.Connection")
conn.Provider = "Microsoft.Jet.Oledb.4.0"
   conn.Open Server.MapPath("db/12345678.mdb")
set rs=server.createobject("adodb.recordset")

'insere os dados na base de dados
instotal = "Insert into ficheiros (nome_study,campo2,campo3,campo4,campo5,campo6,ficheiro,data_in, username, hora_in) values ('"& campo1 &"', '"& campo2 &"', '"& campo3 &"', '"& campo4 &"', '"& campo5 &"', '"& campo6 &"', '"& cficheiro &"','"& data&"', '"& utl&"', '"& hora&"')"
rs.open instotal,conn,2,2

' Redireciona 
'response.redirect ("addfiles.asp?erro=File uploaded sucessfully")

'end if
%>

 

Alguma ideia??

 

entretanto vou fazer uns response.write para ver onde ele para

Compartilhar este post


Link para o post
Compartilhar em outros sites

ele nao aparece nada ou dá o erro 500 ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

nao aparece nada, entretanto fiz algumas alterações e ele ja grava tudo normal na bd com o caminho e o nome do ficheiro, a parte do upload e que nao estou a conseguir por a funcionar.

 

Ja agora no ftp_files_to_put como nao vai ter restricoes de tipo de ficheiros posso defenir como *.*?? ou simplesmente apago?

 

<%
ftp_address          = "ftp.Jabry.com"
ftp_username         = "user"
ftp_password         = "pass"
ftp_remote_directory = "images/" 'Deixe em branco se o upload para diretório raiz
ftp_files_to_put     = "*.txt"  

Dim objFSO, objTextFile, oScript, oScriptNet, oFileSys, oFile, strCMD, strTempFile, strCommandResult
Dim ftp_address, ftp_username, ftp_password, ftp_physical_path, ftp_files_to_put, campo1, campo2, campo3, campo4, campo5, campo6


' Recupera os Dados ----------------------
response.write "11111111111111111111111111111111111111111111111111<br><br>"
campo1 = Request.Form("campo1")
campo2 = Request.Form("campo2")
campo3 = Request.Form("campo3")
campo4 = Request.Form("campo4")
campo5 = Request.Form("campo5")
campo6 = Request.Form("campo6")
hora=time()
data= date()
utl= Session("user")


if campo1="" or campo2="" or campo3="" or campo4="" or campo5="" or campo6="" then
response.redirect "addfiles.asp?erro= All fields are mandatory"
else

response.write "222222222222222222222222222222222222222222222<br><br>"

' pasta + nome dos arquivos
cficheiro = ftp_remote_directory + Request.Form("ficheiro")
response.write (""&cficheiro&"<br><br>")
' Faz o Upload do arquivo selecionado
 response.write "33333333333333333333333333333333333333333333333333333333333333333<br><br>" 
On Error Resume Next
Set oScript = Server.CreateObject("WSCRIPT.SHELL")
Set oFileSys = Server.CreateObject("Scripting.FileSystemObject")
Set objFSO = CreateObject("Scripting.FileSystemObject")

Set objTextFile = objFSO.CreateTextFile(Server.MapPath("test.ftp"))
objTextFile.WriteLine "lcd " & Server.MapPath(".")
objTextFile.WriteLine "open " & ftp_address
objTextFile.WriteLine ftp_username
objTextFile.WriteLine ftp_password

'Verifique para ver se precisamos emitir uma' cd 'command
If ftp_remote_directory <> "" Then
  objTextFile.WriteLine "cd " & ftp_remote_directory
End If

objTextFile.WriteLine "prompt"


If Instr(1, ftp_files_to_put, "*",1) Then
  objTextFile.WriteLine "mput " & ftp_files_to_put
Else
  objTextFile.WriteLine "put " & ftp_files_to_put
End If
objTextFile.WriteLine "bye"
objTextFile.Close
Set objTextFile = Nothing
'Cmd.exe Use para executar ftp.exe, parsing comando arquivo recém-criado
strCMD = "ftp.exe -s:" & Server.MapPath("test.ftp")
strTempFile = "C:\" & oFileSys.GetTempName( )
'saída de cmd.exe para um arquivo temporário 
Call oScript.Run ("cmd.exe /c " & strCMD & " > " & strTempFile, 0, True)
Set oFile = oFileSys.OpenTextFile (strTempFile, 1, False, 0)

On Error Resume Next
'Pega a saída do arquivo temporário
strCommandResult = Server.HTMLEncode( oFile.ReadAll )
oFile.Close
'Eliminar os temporários e os arquivos ftp-comando
Call oFileSys.DeleteFile( strTempFile, True )
Call objFSO.DeleteFile( Server.MapPath("test.ftp"), True )
Set oFileSys = Nothing
Set objFSO = Nothing
'Mostra o resultado da sessão de FTP para a tela
Response.Write( Replace( strCommandResult, vbCrLf, "<br>", 1, -1, 1) )
response.write "4444444444444444444444444444444444444444444444444444444444444444444444444<br><br>"
'Conecta-se a base de Dados
set conn = CreateObject("ADODB.Connection")
conn.Provider = "Microsoft.Jet.Oledb.4.0"
   conn.Open Server.MapPath("db/12345678.mdb")
set rs=server.createobject("adodb.recordset")

'insere os dados na base de dados
instotal = "Insert into ficheiros (nome_study,campo2,campo3,campo4,campo5,campo6,ficheiro,data_in, username, hora_in) values ('"& campo1 &"', '"& campo2 &"', '"& campo3 &"', '"& campo4 &"', '"& campo5 &"', '"& campo6 &"', '"& cficheiro &"','"& data&"', '"& utl&"', '"& hora&"')"
rs.open instotal,conn,2,2

' Redireciona 
'response.redirect ("addfiles.asp?erro=File uploaded sucessfully")

end if
%>

 

Viva, xanburzum alguma ideia do que se passa com isto?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Fala mano.... beleza...

 

você esta testando no localhost ou no server

Compartilhar este post


Link para o post
Compartilhar em outros sites

tenho a pagina num serviço gratuito do jabry mas estou a fazer o upload do ficheiro para um servidor que comprei onde tenho permissoes para tudo.

 

esta foi a minha ultima alteração e ele devolve todos os response.write mas nao faz o upload do ficheiro.

 

<%
ftp_address          = "71.19.73.91"
ftp_username         = "corc"
ftp_password         = "corc1234"
ftp_remote_directory = "corc/images/" 'Deixe em branco se o upload para diretório raiz
ftp_files_to_put     = "*.*"  

Dim objFSO, objTextFile, oScript, oScriptNet, oFileSys, oFile, strCMD, strTempFile, strCommandResult
Dim ftp_address, ftp_username, ftp_password, ftp_physical_path, ftp_files_to_put, campo1, campo2, campo3, campo4, campo5, campo6


' Recupera os Dados ----------------------

study = Request.Form("study")
centro = Request.Form("centro")
ficheiross = Request.Form("ficheiro")
hora=time()
data= date()
utl= Session("user")


if study="" or centro="" or ficheiross="" then
response.redirect "addfiles.asp?erro= All fields are mandatory"
else

response.write "222222222222222222222222222222222222222222222<br><br>"

' pasta + nome dos arquivos
cficheiro = ftp_remote_directory + ficheiross
response.write (""&cficheiro&"<br><br>")
' Faz o Upload do arquivo selecionado
 response.write "33333333333333333333333333333333333333333333333333333333333333333<br><br>" 
On Error Resume Next
Set oScript = Server.CreateObject("WSCRIPT.SHELL")
Set oFileSys = Server.CreateObject("Scripting.FileSystemObject")
Set objFSO = CreateObject("Scripting.FileSystemObject")

Set objTextFile = objFSO.CreateTextFile(Server.MapPath("test.ftp"))
objTextFile.WriteLine "lcd " & Server.MapPath(".")
objTextFile.WriteLine "open " & ftp_address
objTextFile.WriteLine ftp_username
objTextFile.WriteLine ftp_password

'Verifique para ver se precisamos emitir uma' cd 'command
If ftp_remote_directory <> "" Then
  objTextFile.WriteLine "cd " & ftp_remote_directory
End If

objTextFile.WriteLine "prompt"


If Instr(1, ftp_files_to_put, "*",1) Then
  objTextFile.WriteLine "mput " & ftp_files_to_put
Else
  objTextFile.WriteLine "put " & ftp_files_to_put
End If
objTextFile.WriteLine "bye"
objTextFile.Close
Set objTextFile = Nothing
'Cmd.exe Use para executar ftp.exe, parsing comando arquivo recém-criado
strCMD = "ftp.exe -s:" & Server.MapPath("test.ftp")
strTempFile = "C:\" & oFileSys.GetTempName( )
'saída de cmd.exe para um arquivo temporário 
Call oScript.Run ("cmd.exe /c " & strCMD & " > " & strTempFile, 0, True)
Set oFile = oFileSys.OpenTextFile (strTempFile, 1, False, 0)

On Error Resume Next
'Pega a saída do arquivo temporário
strCommandResult = Server.HTMLEncode( oFile.ReadAll )
oFile.Close
'Eliminar os temporários e os arquivos ftp-comando
Call oFileSys.DeleteFile( strTempFile, True )
Call objFSO.DeleteFile( Server.MapPath("test.ftp"), True )
Set oFileSys = Nothing
Set objFSO = Nothing
'Mostra o resultado da sessão de FTP para a tela
Response.Write( Replace( strCommandResult, vbCrLf, "<br>", 1, -1, 1) )
response.write "4444444444444444444444444444444444444444444444444444444444444444444444444<br><br>"

'insere os dados na base de dados
instotal = "Insert into ficheiros (nome_study,centro,ficheiro,data_in, username, hora_in) values ('"& study &"', '"& centro &"', '"& cficheiro &"','"& data&"', '"& utl&"', '"& hora&"')"
rs.open instotal,conn,2,2

' Redireciona 
'response.redirect ("addfiles.asp?erro=File uploaded sucessfully")
call gonow
end if

 

Boas, voltei a este problema...

 

cortei o script de modo a fazer apenas o upload e partir dai, estou a alojar o script num server pago.

 

os dois codigos estao assim:

 

<html><head></head><body><table>
<form name="form1" action="uploadftp.asp" method="post" enctype="multipart/form-data">
<tr>
<td>file:</td>
<td><input type="file" name="ficheiro" size="14"></td>
</tr>
<tr>
<td colspan="2">
<input type="submit" name="submit" value="Enviar">
</td>
</tr>
</form>
</table>
</body></html>

 

 

uploadftp.asp

<%
ftp_address          = "71.19.73.91"
ftp_username         = "corc"
ftp_password         = "1234"
ftp_remote_directory = "" 'Deixe em branco se o upload para diretório raiz
ftp_files_to_put     = ""  

Dim objFSO, objTextFile, oScript, oScriptNet, oFileSys, oFile, strCMD, strTempFile, strCommandResult
Dim ftp_address, ftp_username, ftp_password, ftp_physical_path, ftp_files_to_put, campo1, campo2, campo3, campo4, campo5, campo6


' Recupera os Dados ----------------------

'study = Request.Form("study")
'centro = Request.Form("centro")
ficheiross = Request.Form("ficheiro")
hora=time()
data= date()
utl= Session("user")


'if study="" or centro="" or ficheiross="" then
'response.redirect "addfiles.asp?erro= All fields are mandatory"
'else

response.write "222222222222222222222222222222222222222222222<br><br>"

' pasta + nome dos arquivos
cficheiro = ftp_remote_directory + ficheiross
response.write (""&cficheiro&"<br><br>")
' Faz o Upload do arquivo selecionado
 response.write "33333333333333333333333333333333333333333333333333333333333333333<br><br>" 
On Error Resume Next
Set oScript = Server.CreateObject("WSCRIPT.SHELL")
Set oFileSys = Server.CreateObject("Scripting.FileSystemObject")
Set objFSO = CreateObject("Scripting.FileSystemObject")

Set objTextFile = objFSO.CreateTextFile(Server.MapPath("test.ftp"))
objTextFile.WriteLine "lcd " & Server.MapPath(".")
objTextFile.WriteLine "open " & ftp_address
objTextFile.WriteLine ftp_username
objTextFile.WriteLine ftp_password

'Verifique para ver se precisamos emitir uma' cd 'command
If ftp_remote_directory <> "" Then
  objTextFile.WriteLine "cd " & ftp_remote_directory
End If

objTextFile.WriteLine "prompt"


If Instr(1, ftp_files_to_put, "*",1) Then
  objTextFile.WriteLine "mput " & ftp_files_to_put
Else
  objTextFile.WriteLine "put " & ftp_files_to_put
End If
objTextFile.WriteLine "bye"
objTextFile.Close
Set objTextFile = Nothing
'Cmd.exe Use para executar ftp.exe, parsing comando arquivo recém-criado
strCMD = "ftp.exe -s:" & Server.MapPath("test.ftp")
strTempFile = "C:\" & oFileSys.GetTempName( )
'saída de cmd.exe para um arquivo temporário 
Call oScript.Run ("cmd.exe /c " & strCMD & " > " & strTempFile, 0, True)
Set oFile = oFileSys.OpenTextFile (strTempFile, 1, False, 0)

On Error Resume Next
'Pega a saída do arquivo temporário
strCommandResult = Server.HTMLEncode( oFile.ReadAll )
oFile.Close
'Eliminar os temporários e os arquivos ftp-comando
Call oFileSys.DeleteFile( strTempFile, True )
Call objFSO.DeleteFile( Server.MapPath("test.ftp"), True )
Set oFileSys = Nothing
Set objFSO = Nothing
'Mostra o resultado da sessão de FTP para a tela
Response.Write( Replace( strCommandResult, vbCrLf, "<br>", 1, -1, 1) )
response.write "4444444444444444444444444444444444444444444444444444444444444444444444444<br><br>"

'insere os dados na base de dados
'instotal = "Insert into ficheiros (nome_study,centro,ficheiro,data_in, username, hora_in) values ('"& study &"', '"& centro &"', '"& cficheiro &"','"& 'data&"', '"& utl&"', '"& hora&"')"
'rs.open instotal,conn,2,2

' Redireciona 
response.write "o ficheiro com o nome " Request.Form("ficheiro") " foi enviado com sucesso."
'response.redirect ("addfiles.asp?erro=File uploaded sucessfully")
call gonow
'end if
%>

 

e nao da erro simplesmente fica em branco

 

ok penso ter percebido o que se passa.

 

Eu pus 9 response.writes pelo ficheiro e ele devolve todos menos aquele em que faço um request.form("ficheiro")

 

devolve assim

 

1AAAA

 

2345678

 

ou seja falha aqui

 

response.write "AA"&Request.Form("ficheiro")&"AA"

 

alguma ideia porque e que ele nao passa o ficheiro pelo form??

 

Obrigado

 

nenhuma ideia?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Xan alguma ideia?

 

É a ultima coisa que falta por a funcionar.

 

Preciso tambem que ele faça o upload por binario recorrendo a xml(ouvi dizer que é a melhor e mais segura maneira de fazer isto)o que achas?

 

E para terminar preciso que ele antes de fazer o upload verifique se uma determinada past ja existe e se nao cria e grava la renomeando o ficheiro para varias varias ex: std001_exam001_center002_pat001_visit001.zip estas variaveis estao no formulario de upload.

 

Obrigado, agradeco muito se me poderes ajudar neste ultimo caso.

Compartilhar este post


Link para o post
Compartilhar em outros sites

o diretório remotesta com todos os direitos administrativos (premissão de escrita,leitura etc)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Sim tem todas as permissoes.

 

a verificacao da pasta, criacao da mesma e renomear ficheiros penso ter resolvido assim.

 

Sera assim tao facil??

 

<%
dim fs,f
set fs=Server.CreateObject("Scripting.FileSystemObject")

if fs.FolderExists("c:\corc\uploads\'"&session("folder")&"'")=false then
set f=fs.CreateFolder("c:\corc\'"&session("folder")&"'")
end if


set file = fso.GetFile("c:\upload\'"&session("folder")&"'\'"&session("ficheirosss")&"'") 
file.name = "'"&session("file_name_total")&"'"


fso.MoveFile "c:\upload\'"&session("folder")&"'\'"&session("ficheirosss")&"'", "c:\upload\'"&session("folder")&"'\'"&session("file_name_total")&"'"


set session("ficheirosss")=nothing
set session("file_name_total")=nothing
set session("folder")=nothing
set fs=nothing
set f=nothing
%> 

Compartilhar este post


Link para o post
Compartilhar em outros sites

pessoal precisava mesmo da vossa ajuda, tenho de terminar isto esta semana e so me falta o upload de ftp. Se for preciso eu compenso de alguma maneira.

 

Obrigado

Compartilhar este post


Link para o post
Compartilhar em outros sites

tem um exemplo de upload, onde você verifica se a pasta existe ou quer criar uma nova, mudar o nome do arquivo, você pode implementá-lo

Compartilhar este post


Link para o post
Compartilhar em outros sites

mas tem componentes??

 

Eu to farto de procurar e nao encontro nada, apenas o que postas-te mas mesmo assim nao estou a conseguir po-lo a funcionar

Compartilhar este post


Link para o post
Compartilhar em outros sites

tem alguns pagos, como por exemplo:

 

o Xceed FTP Library,Majodio.FTP,KFTP Simple Ftp Component,DypsFTP, PowerTCP FTP for ActiveX

 

entre varios outros, mas seria legal você implemntar apenas isso, no script que postei

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pois, eu queria deixar os componentes de lado. Achas que me podes ajudar com o teu script?

 

Queria mesmo por isto a funcionar, é a ultima coisa e a mais importante do projecto e ainda por cima o deadline é esta semana :S

 

Eu limpei ao maximo e ele escreve FIM!!!!!!!!! mas nao escreve o ficheiro, penso que ele nao esta a receber o ficheiro pelo form correctamente mas esta tudo normal..

 

<html><head></head>
<body>
<form method='POST' enctype='multipart/form-data' action='uploadftp.asp'>
File: <input type="file" name="ficheirosss"><br>
<input type="submit" value="Press"> 
</form>
</body>
</html>

<%
ftp_address          = "76.12.79.41"
ftp_username         = "cor"
ftp_password         = "1234"
ftp_remote_directory = "" 
ftp_files_to_put     = ""  

Dim objFSO, objTextFile, oScript, oScriptNet, oFileSys, oFile, strCMD, strTempFile, strCommandResult
Dim ftp_address, ftp_username, ftp_password, ftp_physical_path, ftp_files_to_put, ficheirosss, campo2, campo3, campo4, campo5, campo6

ficheiro = Request.Form("ficheirosss")

response.write ficheiro


' pasta + nome dos arquivos
cficheiro = ftp_remote_directory + ficheiro
response.write (""&cficheiro&"<br><br>")
' Faz o Upload do arquivo selecionado

On Error Resume Next
Set oScript = Server.CreateObject("WSCRIPT.SHELL")
Set oFileSys = Server.CreateObject("Scripting.FileSystemObject")
Set objFSO = CreateObject("Scripting.FileSystemObject")

Set objTextFile = objFSO.CreateTextFile(Server.MapPath("test.ftp"))
objTextFile.WriteLine "lcd " & Server.MapPath(".")
objTextFile.WriteLine "open " & ftp_address
objTextFile.WriteLine ftp_username
objTextFile.WriteLine ftp_password

'Verifique para ver se precisamos emitir uma' cd 'command
If ftp_remote_directory <> "" Then
  objTextFile.WriteLine "cd " & ftp_remote_directory
End If

objTextFile.WriteLine "prompt"


If Instr(1, ftp_files_to_put, "*",1) Then
  objTextFile.WriteLine "mput " & ftp_files_to_put
Else
  objTextFile.WriteLine "put " & ftp_files_to_put
End If
objTextFile.WriteLine "bye"
objTextFile.Close

Set objTextFile = Nothing
'Cmd.exe Use para executar ftp.exe, parsing comando arquivo recem-criado
strCMD = "ftp.exe -s:" & Server.MapPath("test.ftp")
strTempFile = "C:\" & oFileSys.GetTempName( )

'sada de cmd.exe para um arquivo temporrio 
Call oScript.Run ("cmd.exe /c " & strCMD & " > " & strTempFile, 0, True)
Set oFile = oFileSys.OpenTextFile (strTempFile, 1, False, 0)

On Error Resume Next
'Pega a sada do arquivo temporrio
strCommandResult = Server.HTMLEncode( oFile.ReadAll )
oFile.Close

'Eliminar os temporrios e os arquivos ftp-comando
Call oFileSys.DeleteFile( strTempFile, True )
Call objFSO.DeleteFile( Server.MapPath("test.ftp"), True )
Set oFileSys = Nothing
Set objFSO = Nothing
'Mostra o resultado da sesso de FTP para a tela
Response.Write( Replace( strCommandResult, vbCrLf, "<br>", 1, -1, 1) )
response.write "<br>FIM!!!!!!!!!!!!!!!!!!!!!"
'response.write "o ficheiro com o nome "Request.Form("ficheirosss")" foi enviado com sucesso."

%>

 

se me podesses ajudar ficaria muito agradecido e certamente havera alguma maneira de te compensar pelo incomodo.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você já tentou estes? Link 1 Link 2

 

São scripts de Upload's sem componentes que estão no Lab.Script

 

Caso não faça o teste.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Obrigado mas esses sao uploads de http, eu tenho de fazer em ftp.

De http tenho a funcionar bem agora ftp é que nao a maneira e como tenho de fazer o up de ficheiros de 500mb tem de ser ftp.

 

Obrigado na mesma

Compartilhar este post


Link para o post
Compartilhar em outros sites

implemente este exemplo, ele usa o Dundas, um COM+ que a maioria dos server tem

 

 

<%
Response.Buffer = true
on error resume next

'declara as variáveis
dim objUpload
dim strMessage

'cria instância do objeto
set objUpload = server.CreateObject("Dundas.Upload.2")

'verifica um possível erro
if err.number <> 0 then
Response.Redirect "Dundas.asp?Message=" & err.description
end if

'estipula o tamanho máximo do arquivo
objUpload.MaxFileSize = 1048576 

'formatando o nome do arquivo
objUpload.UseUniqueNames = false

'informa o path onde os arquivos serão salvos
'obs: o diretório deve ter permissão de escrita
objUpload.Save "c:\www\login\web\teste"

dim temp

'verifica erro
if IsEmpty(objUpload.Form("txtName")) = false then temp = " "
if err.number <> 0 then
strMessage = objUpload.Form("txtName") & temp & "Falha, ocorreu o erro: " & err.description

'mensagem de sucesso
else
strMessage = "Upload realizado com sucesso pelo" & temp & objUpload.Form("txtName") & "."
end if 

Response.Redirect "Dundas.asp?Message=" & strMessage

'destroi o objeto
set objUpload = nothing
%>

 

 

 

nesse exemplo foi usado o diretório teste. Substitua pelo diretório em que você deseja gravar. Esse diretório deve necessariamente ter permissão de escrita.

 

Agora faça um formulário que passará as informações ao script asp responsável por chamar o componente.

 

Use a seguinte tag input no seu formulário:

 

<input NAME="File1" TYPE="file">
<input NAME="File2" TYPE="file"> 

 

agora se precisar sem componentes, neste code seu, ele nao gera erro , mas também não manda o arquivo, é isso!?!?!

dÊ um response.rite no seu movefile, para ver o que ele esta passando.

 

e abaixo um exemplo de FTP com o Xceed

 

<%@ LANGUAGE="VBSCRIPT" %>

<%
'--------------------------------------------------------------
' Xceed FTP Library - FTP Client sample application
' Copyright (c) 2000 Xceed Software Inc.
'
' [FtpClient.asp]
'
' Esta amostra ASP simples demonstra como recuperar uma lista dos itens
'Em uma pasta especificado com remoto usando o método GetFolderContents.
'
'Baixe o componente em versão de teste:
' http://www.xceedsoft.com/download/FtpLib/index.htm
' Download para full application
' http://www.xceedsoft.com/cs/result.asp?id=136
'--------------------------------------------------------------

Dim xFtp
Dim sServerAddress
Dim sPort
Dim sUsername
Dim sPassword
Dim sFolder


Set xFtp = CreateObject( "XceedSoftware.XceedFtp" )	

'Se você estiver usando a versão gratuita de Xceed Biblioteca FTP, você vai
'necessidade de executar o programa de versão de teste Xceed FTP de configuração em
'O sistema em que o servidor IIS está localizado, caso contrário, a biblioteca
'Vai reclamar que não está licenciada.

'Se você é um usuário registrado, descomente a seguinte linha
'E substituir o texto entre aspas com sua chave de licença.

'Call xFtp.License (" sua chave de licença vai aqui ")

sServerAddress = trim( Request( "ServerAddress" ) )
sPort          = trim( Request( "Port" ) )			
sUsername      = trim( Request( "Username" ) )		
sPassword      = trim( Request( "Password" ) )		
sFolder        = trim( Request( "Folder" ) )	' A variável sFolder só é definido quando esta página ASP
					' chama-se quando uma pasta estiver selecionada

xFtp.ServerAddress = sServerAddress		' Defina a propriedade ServerAddresss
xFtp.ServerPort    = sPort			' Defina a propriedade ServerPort (default = 21)
xFtp.Username      = sUsername			' Defina a propriedade Nome de usuário (padrão = anônimo)	
xFtp.Password      = sPassword			' Defina a propriedade Password (padrão= convidado )

On Error Resume Next

Call xFtp.Connect()	'Conecta no FTP server

If Err.Number = 0 Then
  Response.Write( "<B>Connected to " & sServerAddress & "<BR><BR></B>" )	

  ' Listar o procedimento ObtainFolderListing
  Call ObtainFolderListing( sFolder )	

  If Err.Number <> 0 Then
     Response.Write( Err.Description & " #" & Err.Number & "<BR><BR>" )	
  End IF
Else
  Response.Write( Err.Description & " #" & Err.Number & "<BR><BR>" )	
End If

Set xFtp = Nothing			' limpa a nossa instância do objeto XceedFtp
Set xFolderItems = Nothing

' --------------------------------------------------------------
' Uma vez que estamos conectados, vamos recuperar o conteúdo da pasta
'Da pasta selecionada. A pasta de trabalho atual não é
'Relevante se simplesmente chamar o método GetFolderContents
'E passá-lo o caminho completo eo nome da pasta que queremos
'Para listar o conteúdo de.
' --------------------------------------------------------------
Public Sub ObtainFolderListing( sName )

Dim xFolderItems	
Dim xItem
Dim sNewFolder

On Error Resume Next

' Faça uma listagem do conteúdo da pasta e colocá-lo em nossa coleção XceedFtpFolderItems
Set xFolderItems = xFtp.GetFolderContents( sName, 0 )
Call RetrieveParentFolder( sFolder )

If Err.Number = 0 Then
  Response.Write( "<TABLE WIDTH=""600"" BORDER=""2"" CELLSPACING=""0"" CELLPADDING=""0"">" & _
                  "<TR  BGCOLOR=""BLUE"">" & _
                     "<TD ALIGN=""CENTER""><B><FONT COLOR=""WHITE"">Date</FONT></B></TD>" & _
                     "<TD ALIGN=""CENTER""><B><FONT COLOR=""WHITE"">Size (in bytes)</FONT></B></TD>" & _
	      "<TD ALIGN=""CENTER""><B><FONT COLOR=""WHITE"">Type</FONT></B></TD>" & _	
                     "<TD ALIGN=""CENTER""><B><FONT COLOR=""WHITE"">Name</FONT></B></TD>" & _
                  "</TR>" )      

     ' Loop através de cada item na coleção XceedFtpFolderItems e recuperar o
      'Informações sobre cada item.	
     For Each xItem In xFolderItems

     Select Case xItem.ItemType
     Case 0	'Is a file 
        Response.Write( "<TR>" & _
                           "<TD WIDTH=""200"">" & xItem.Date & "</TD>" & _
                           "<TD WIDTH=""100"">" & xItem.FileSize & "</TD>" & _ 
                           "<TD WIDTH=""100"">Arquivo</TD>" & _
                           "<TD WIDTH=""200""><A HREF=""Ftp://" & sUsername & ":" & sPassword & "@" & sServerAddress & ":" & sPort & "/" & sFolder & "/" & xItem.ItemName & """>" & xItem.ItemName & "</A></TD>" & _
                        "</TR>" )

     Case 1	'Is a folder
        sNewFolder = sFolder	

 If ( Len( sNewFolder ) > 0 ) Then
           sNewFolder = sNewFolder & "/"
        End If

        sNewFolder = sNewFolder & xItem.ItemName 'Set the new path and folder

        ' O link que será escrito atualmente recorda a página XceedFtp.asp e
         'Obtém o conteúdo da pasta da nova pasta especificada.	
 Response.Write( "<TR>" & _
                           "<TD WIDTH=""200"">" & xItem.Date & "</TD>" & _
                           "<TD WIDTH=""100"">" & xItem.FileSize & "</TD>" & _ 
                           "<TD WIDTH=""100"">Diretorio</TD>" & _
                           "<TD WIDTH=""200""><A HREF=""XceedFtp.asp?ServerAddress=" & sServerAddress & "&Port=" & sPort & "&Username=" & sUsername & "&Password=" & sPassword & "&Folder=" & sNewFolder & """ > " & xItem.ItemName & "</A></TD>" & _
                        "</TR>" )

     Case 2	'Is a link
        If LinkType( xItem.ItemName ) = "folder" then

           sNewFolder = sFolder

           If ( Len( sNewFolder ) > 0 ) Then
              sNewFolder = sNewFolder & "/"
           End If	 

           sNewFolder = sNewFolder & xItem.ItemName ' Set the new path and folder

           Response.Write( "<TR>" & _
                              "<TD WIDTH=""200"">" & xItem.Date & "</TD>" & _
                              "<TD WIDTH=""100"">" & xItem.FileSize & "</TD>" & _ 
                              "<TD WIDTH=""100"">Link Diretorio</TD>" & _
                              "<TD WIDTH=""200""><A HREF=""XceedFtp.asp?ServerAddress=" & sServerAddress & "&Port=" & sPort & "&Username=" & sUsername & "&Password=" & sPassword & "&Folder=" & sNewFolder & """ > " & xItem.ItemName & "</A></TD>" & _
                           "</TR>" )	
        Else
           If LinkType( xItem.ItemName ) = "file" Then
              Response.Write( "<TR>" & _
                                 "<TD WIDTH=""200"">" & xItem.Date & "</TD>" & _
                                 "<TD WIDTH=""100"">" & xItem.FileSize & "</TD>" & _ 
                                 "<TD WIDTH=""100"">Link Arquivo</TD>" & _
                                 "<TD WIDTH=""200""><A HREF=""Ftp://" & sUsername & ":" & sPassword & "@" & sServerAddress & ":" & sPort & "/" & sFolder & "/" & xItem.ItemName & """>" & xItem.ItemName & "</A></TD>" & _
                              "</TR>" )
          End If
End If

     End Select	
     Next
  Response.Write( "</TABLE>" )
Else
  Response.Write( "Unable to list the files in " & sFilename & "<BR>" )
  Response.Write( Err.Description & " #" & Err.Number & "<BR><BR>" )
End If

End Sub

' --------------------------------------------------------------
' O procedimento RetrieveParentFolder é usado para obter o pai
'Pasta da pasta remota. Uma vez que estamos inicialmente
'Na pasta raiz em todos os momentos, temos de mudar a pasta atual
'para a mesma pasta a ser usada pelos GetFolderContents
'Método antes de ser capaz de recuperá-la da pasta pai.
' --------------------------------------------------------------
Public Sub RetrieveParentFolder( sName )

Dim sParentFolder 
Dim nPos

If Len( sName ) > 0 Then
  Call xFtp.ChangeCurrentFolder( sName )	' Altere a pasta remota
End If

sName = xFtp.CurrentFolder			' Obter a pasta atual
nPos = InStrRev( sName, "\" )
sParentFolder = Mid( sName, 1, nPos )		' Analisar a nossa pasta para recuperá-lo de pai

Response.Write( "<TABLE WIDTH=""600"" BORDER=""0"" CELLSPACING=""0"" CELLPADDING=""0"">" & _
               "<TR>" & _
                  "<TD WIDTH=""500"" ALIGN=""LEFT""><B>Você está atualmente localizada em " & sFolder & "</B></TD>" & _
                  "<TD WIDTH=""100"" ALIGN=""RIGHT""><A HREF=""XceedFtp.asp?ServerAddress=" & sServerAddress & "&Port=" & sPort & "&Username=" & sUsername & "&Password=" & sPassword & "&Folder=" & sParentFolder & """ >Parent Folder</A></TD>" & _
               "</TR>" & _
               "</TABLE>" )              

End Sub

' --------------------------------------------------------------
' Alguns servidores FTP usam links em vez de arquivos ou pastas. contudo
'Estes links para um arquivo ou pasta pode ser acessado da
'Mesma forma que um arquivo regular ou pasta. Uma vez que não sabemos para
'O que os links de ligação, vamos fazer um" teste "com o
'Método ChangeCurrentFolder da Biblioteca Ftp Xceed. Se o
'Links apontam para um arquivo, um erro será retornado e o
'Retorno" arquivo ". Se não houver nenhum erro e fomos capazes de
'Alterar com êxito as pastas, então vamos voltar" pasta ".
' --------------------------------------------------------------
Public Function LinkType( sName )

On Error Resume Next

Call xFtp.ChangeCurrentFolder( sName )

If Err.Number = 0 then
  LinkType = "folder"
Else
  LinkType = "file"
  Err = 0 
End If

End Function

' --------------------------------------------------------------


%>

Compartilhar este post


Link para o post
Compartilhar em outros sites

O servidor que vai correr nao tera componentes visto nao haver orcamento para isso, embora o dundas me pareca gratuito... é sem duvida algo a ver entretanto o ideal era fazer sem componentes.

 

 

agora se precisar sem componentes, neste code seu, ele nao gera erro , mas também não manda o arquivo, é isso!?!?!

Sim é isso mesmo.

 

dÊ um response.rite no seu movefile, para ver o que ele esta passando.

movefile?

Eu no inicio do ficheiro tenho

 

response.write (" ----------------> " & request.form("ficheirosss"))

 

ele apenas devolve a seta, deve haver algum problema na var do form mas como podes ver em cima aquilo parece estar bem.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Visto o dundas ser gratuito ainda fui espreitar no host em que estou a testar mas eles nao o tem...

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.