Re: FTP in ASP.NET C#
- From: "Nicholas Paldino [.NET/C# MVP]" <mvp@xxxxxxxxxxxxxxxxxxxxxxxxxxx>
- Date: Wed, 15 Jun 2005 11:22:15 -0400
rex64,
If you have access to .NET 2.0 on the server, then I would create an
FtpWebRequest and then send the file through that. If you don't have access
to this, then I would recommend looking at the Indy Project, located at
(watch for line wrap):
http://www.indyproject.org/
It has native .NET classes that will allow you to use the FTP protocol.
You have to make sure that the user that the ASP.NET page is running
under has access to the network though in order to do this (or any other
network operation, for that matter).
Hope this helps.
--
- Nicholas Paldino [.NET/C# MVP]
- mvp@xxxxxxxxxxxxxxxxxxxxxxxxxxx
"rex64" <rex644@xxxxxxxxx> wrote in message
news:1118848575.206961.31390@xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
>I would like to have my application FTP a file to a server after a user
> uploads a file to another server. I would like something similar to
> this, except to work in C#.
>
> <%@ Language=VBScript %>
> <%
> ' FTP via ASP without using 3rd-party components
> ' Ben Meghreblian 15th Jan 2002
> ' benmeg at benmeg dot com / http://benmeg.com
> '
> ' This script assumes the file to be FTP'ed is in the same directory as
> this script.
> ' It should be obvious how to change this (*hint* change the lcd line).
> ' You may specify a wildcard in ftp_files_to_put (e.g. *.txt).
>
> ' NB: You need to have C:\winnt\system32\wshom.ocx registered to use
> the WSCRIPT.SHELL object.
> ' It is registered by default, but is sometimes removed for security
> reasons (no kidding!).
> ' You will also need cmd.exe in the path, which again is there, unless
> the box is locked down.
> ' Check with your web host/resident sysadmin if in doubt.
> '
> ' NB: This script was originally written in response to a thread on a
> Wrox ASP mailing list.
> ' At the time, I was hosting on a shared NT4/IIS4 box and the script
> worked fine. Since I wrote
> ' it, several people have got in contact asking why it doesn't work on
> later versions of either
> ' Windows or IIS. The answer is probably either as mentioned in the
> above NB, or to do with
> ' firewalls restricting outbound traffic from and/or to certain ports.
> This said, many people
> ' have successfully used this code to FTP to/from Windows 2000/Windows
> XP boxes running IIS5/IIS6.
> Dim objFSO, objTextFile, oScript, oScriptNet, oFileSys, oFile, strCMD,
> strTempFile, strCommandResult
> Dim ftp_address, ftp_username, ftp_password, ftp_physical_path,
> ftp_files_to_put, ftp_remote_directory
>
> ' Edit these variables to match your specifications
> ftp_address = "ftp.server.com"
> ftp_username = "username"
> ftp_password = "password"
> ftp_remote_directory = "subdirectory" ' Leave blank if uploading to
> root directory
> ftp_files_to_put = "file.txt" ' You can use wildcards here
> (e.g. *.txt)
> On Error Resume Next
> Set oScript = Server.CreateObject("WSCRIPT.SHELL")
> Set oFileSys = Server.CreateObject("Scripting.FileSystemObject")
> Set objFSO = CreateObject("Scripting.FileSystemObject")
> ' Build our ftp-commands file
> 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
>
> ' Check to see if we need to issue a 'cd' command
> If ftp_remote_directory <> "" Then
> objTextFile.WriteLine "cd " & ftp_remote_directory
> End If
>
> objTextFile.WriteLine "prompt"
>
> ' If the file(s) is/are binary (i.e. .jpg, .mdb, etc..), uncomment the
> following line' objTextFile.WriteLine "binary"
> ' If there are multiple files to put, we need to use the command
> 'mput', instead of 'put'
> 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
> ' Use cmd.exe to run ftp.exe, parsing our newly created command file
> strCMD = "ftp.exe -s:" & Server.MapPath("test.ftp")
> strTempFile = "C:\" & oFileSys.GetTempName( )
> ' Pipe output from cmd.exe to a temporary file (Not :| Steve)
> Call oScript.Run ("cmd.exe /c " & strCMD & " > " & strTempFile, 0,
> True)
> Set oFile = oFileSys.OpenTextFile (strTempFile, 1, False, 0)
>
> On Error Resume Next
> ' Grab output from temporary file
> strCommandResult = Server.HTMLEncode( oFile.ReadAll )
> oFile.Close
> ' Delete the temporary & ftp-command files
> Call oFileSys.DeleteFile( strTempFile, True )
> Call objFSO.DeleteFile( Server.MapPath("test.ftp"), True )
> Set oFileSys = Nothing
> Set objFSO = Nothing
> ' Print result of FTP session to screen
> Response.Write( Replace( strCommandResult, vbCrLf, "<br>", 1, -1, 1) )
> %>
>
.
- References:
- FTP in ASP.NET C#
- From: rex64
- FTP in ASP.NET C#
- Prev by Date: Performance Issues
- Next by Date: Re: calling C/C++ DLL that takes a pointer to LPTSTR
- Previous by thread: FTP in ASP.NET C#
- Next by thread: calling C/C++ DLL that takes a pointer to LPTSTR
- Index(es):
Relevant Pages
|