2

enter code hereI am having an issue putting my file on a remote FTP server.

I am using WinSCP .NET assembly with C#.

I am able to connect to the FTP server but when I try to use session.PutFile(local,remote) it jumps down to transferResult.Check() with an error:

{WinSCP.SessionRemoteException: Error transferring file 'C:\testfile.txt. ---> WinSCP.SessionRemoteException: Copying files to remote side failed. Could not change to "/ftp:/"; 'ftp:' not found.

Please find my code below.

private static void transferWinSCP()
{
    string userName = myUsername;
    string password = myPassword;
    string path = ftp://hostname.com/f/fofd671e-0eee-4c23-932d-4ba32c938c8f;
    string logPath = ConfigurationManager.AppSettings["LogPath"];**
    try
    {
        SessionOptions sessionOptions = new SessionOptions
        {
            Protocol = Protocol.Ftp,
            HostName = "hostname.com",
            PortNumber = 990,
            UserName = userName,
            Password = password,
            FtpSecure = FtpSecure.Implicit,
            FtpMode = FtpMode.Passive,
            TlsHostCertificateFingerprint = "xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx"
        };

        using (Session session = new Session())
        {

            session.SessionLogPath = logPath;

            //connect
            session.Open(sessionOptions);

            //upload
            TransferOptions transferOptions = new TransferOptions {TransferMode = TransferMode.Binary};

            TransferOperationResult transferResult = session.PutFiles(@"C:\testfile.txt",url, false,
                    transferOptions);
            transferResult.Check(); //ftp error

            foreach (TransferEventArgs transfer in transferResult.Transfers)
            {
                Console.Write("upload of {0} succeeded", transfer.FileName);
            }
        }
    }
    catch (Exception ex)
    {
        Console.Write("error {0}", ex);
    }
}

Here is my log file:

. 2015-08-07 10:43:11.653 --------------------------------------------------------------------------
. 2015-08-07 10:43:11.653 WinSCP Version 5.7.4 (Build 5553) (OS 6.1.7601 Service Pack 1 - Windows 7 Professional)
. 2015-08-07 10:43:11.653 Configuration: nul
. 2015-08-07 10:43:11.653 Log level: Normal
. 2015-08-07 10:43:11.653 Local account: userDomain\userUserName
. 2015-08-07 10:43:11.653 Process ID: 30816
. 2015-08-07 10:43:11.653 Command-line: " /xmllog="C:\..\..\\Local\Temp\wscp2A00.01E1F1E1.tmp" /xmlgroups /nointeractiveinput /dotnet=574  /ini=nul /log="C:\Log.txt"  /console /consoleinstance=_10752_27784591_85
. 2015-08-07 10:43:11.653 Time zone: Current: GMT-4, Standard: GMT-5 (Eastern Standard Time), DST: GMT-4 (Eastern Daylight Time), DST Start: 3/8/2015, DST End: 11/1/2015
. 2015-08-07 10:43:11.653 Login time: Friday, August 07, 2015 10:43:11 AM
. 2015-08-07 10:43:11.653 --------------------------------------------------------------------------
. 2015-08-07 10:43:11.653 Script: Retrospectively logging previous script records:
> 2015-08-07 10:43:11.653 Script: option batch on
< 2015-08-07 10:43:11.653 Script: batch           on        
< 2015-08-07 10:43:11.653 Script: reconnecttime   120       
> 2015-08-07 10:43:11.653 Script: option confirm off
< 2015-08-07 10:43:11.653 Script: confirm         off       
> 2015-08-07 10:43:11.653 Script: option reconnecttime 120
< 2015-08-07 10:43:11.653 Script: reconnecttime   120       
> 2015-08-07 10:43:11.653 Script: open ftp://domainName%2F---%40.com:***@hostName.com:990 -implicit -certificate="xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx" -passive=1 -timeout=15
. 2015-08-07 10:43:11.653 --------------------------------------------------------------------------
. 2015-08-07 10:43:11.653 Session name: domain\username@hostName.com (Ad-Hoc site)
. 2015-08-07 10:43:11.653 Host name: hostName.com (Port: 990)
. 2015-08-07 10:43:11.654 User name: domainName/username (Password: Yes, Key file: No)
. 2015-08-07 10:43:11.654 Transfer Protocol: FTP
. 2015-08-07 10:43:11.654 Ping type: C, Ping interval: 30 sec; Timeout: 15 sec
. 2015-08-07 10:43:11.654 Disable Nagle: No
. 2015-08-07 10:43:11.654 Proxy: none
. 2015-08-07 10:43:11.654 Send buffer: 262144
. 2015-08-07 10:43:11.654 UTF: 2
. 2015-08-07 10:43:11.654 FTP: FTPS: Implicit TLS/SSL; Passive: Yes [Force IP: A]; MLSD: A [List all: A]
. 2015-08-07 10:43:11.654 Session reuse: Yes
. 2015-08-07 10:43:11.654 TLS/SSL versions: TLSv1.0-TLSv1.2
. 2015-08-07 10:43:11.654 Local directory: default, Remote directory: home, Update: Yes, Cache: Yes
. 2015-08-07 10:43:11.654 Cache directory changes: Yes, Permanent: Yes
. 2015-08-07 10:43:11.654 Timezone offset: 0h 0m
. 2015-08-07 10:43:11.654 --------------------------------------------------------------------------
. 2015-08-07 10:43:11.928 Connecting to hostName.com:990 ...
. 2015-08-07 10:43:11.969 Connected with hostName.com:990, negotiating TLS connection...
. 2015-08-07 10:43:12.040 Verifying certificate for "" with fingerprint xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx and 20 failures
. 2015-08-07 10:43:12.072 Certificate verified against Windows certificate store
. 2015-08-07 10:43:12.072 Certificate common name "*.sharefileftp.com" matches hostname
. 2015-08-07 10:43:12.073 Using TLSv1, cipher TLSv1/SSLv3: RC4-SHA, 2048 bit RSA
. 2015-08-07 10:43:12.073 TLS connection established. Waiting for welcome message...
< 2015-08-07 10:43:12.273 220 ftp-ec2-1.sharefile.com FTP Server Ready (SSL)
> 2015-08-07 10:43:12.273 USER domainName/username
< 2015-08-07 10:43:12.301 331 Hello domainName/username, please enter your password.
> 2015-08-07 10:43:12.301 PASS *********
< 2015-08-07 10:43:12.711 230-Connection established from (unknown) [IPAddress].
< 2015-08-07 10:43:12.938 230-You are connected as username (username).
< 2015-08-07 10:43:12.938 230 Welcome to the Host FTP site.
> 2015-08-07 10:43:12.938 SYST
< 2015-08-07 10:43:13.193 215 UNIX Type: L8
> 2015-08-07 10:43:13.193 FEAT
< 2015-08-07 10:43:13.221 211-Extensions supported:
< 2015-08-07 10:43:13.445  EPSV
< 2015-08-07 10:43:13.445  MDTM
< 2015-08-07 10:43:13.445  PASV
< 2015-08-07 10:43:13.445  REST STREAM
< 2015-08-07 10:43:13.445  SIZE
< 2015-08-07 10:43:13.445  UTF8
< 2015-08-07 10:43:13.445  PBSZ
< 2015-08-07 10:43:13.445  PROT
< 2015-08-07 10:43:13.445  X-NOVELLABS
< 2015-08-07 10:43:13.445  X-CITRIX
< 2015-08-07 10:43:13.445 211 End.
> 2015-08-07 10:43:13.445 OPTS UTF8 ON
< 2015-08-07 10:43:13.472 200 OK.
> 2015-08-07 10:43:13.472 PBSZ 0
< 2015-08-07 10:43:13.498 200 OK.
> 2015-08-07 10:43:13.498 PROT P
< 2015-08-07 10:43:13.526 200 Data connections set to secure (SSL) mode
. 2015-08-07 10:43:13.526 Connected
. 2015-08-07 10:43:13.526 --------------------------------------------------------------------------
. 2015-08-07 10:43:13.526 Using FTP protocol.
. 2015-08-07 10:43:13.526 Doing startup conversation with host.
> 2015-08-07 10:43:13.526 PWD
< 2015-08-07 10:43:13.554 257 "/"
. 2015-08-07 10:43:13.554 Getting current directory name.
. 2015-08-07 10:43:13.554 Startup conversation with host finished.
< 2015-08-07 10:43:13.554 Script: Active session: [1] domain/username@hostFile.com
> 2015-08-07 10:43:13.684 Script: pwd
< 2015-08-07 10:43:13.684 Script: /
> 2015-08-07 10:43:15.532 Script: put  -nopermissions -preservetime -transfer="binary" -- "C:\testFile.txt" "/f/fofd671e-0eee-4c23-932d-4ba32c938c8f/"
. 2015-08-07 10:43:15.534 Copying 1 files/directories to remote directory "/f/fofd671e-0eee-4c23-932d-4ba32c938c8f/"
. 2015-08-07 10:43:15.534   PrTime: Yes; PrRO: No; Rght: rw-r--r--; PrR: No (No); FnCs: N; RIC: 0100; Resume: S (102400); CalcS: No; Mask: 
. 2015-08-07 10:43:15.534   TM: B; ClAr: No; RemEOF: No; RemBOM: No; CPS: 0; NewerOnly: No; InclM: ; ResumeL: 0
. 2015-08-07 10:43:15.534   AscM: *.*html; *.htm; *.txt; *.php; *.php3; *.cgi; *.c; *.cpp; *.h; *.pas; *.bas; *.tex; *.pl; *.js; .htaccess; *.xtml; *.css; *.cfg; *.ini; *.sh; *.xml
. 2015-08-07 10:43:15.535 File: 'C:\testFile.txt' [2015-03-31T18:55:35.408Z] [35]
. 2015-08-07 10:43:15.536 Copying "C:\testFile.txt" to remote directory started.
. 2015-08-07 10:43:15.536 Binary transfer mode selected.
. 2015-08-07 10:43:15.536 Starting upload of C:\testFile.txt
> 2015-08-07 10:43:15.536 CWD /f/fofd671e-0eee-4c23-932d-4ba32c938c8f/
< 2015-08-07 10:43:15.730 550 Could not change to "/f/fofd671e-0eee-4c23-932d-4ba32c938c8f/"; 'f' not found.
> 2015-08-07 10:43:15.730 CWD /f/
< 2015-08-07 10:43:15.915 550 Could not change to "/f/"; 'f' not found.
> 2015-08-07 10:43:15.915 CWD /
< 2015-08-07 10:43:16.113 250 "/" is the current directory.
> 2015-08-07 10:43:16.113 MKD f
< 2015-08-07 10:43:16.466 550 Error creating 'f': Insufficient permissions to create this folder here.
> 2015-08-07 10:43:16.466 CWD /f/
< 2015-08-07 10:43:16.654 550 Could not change to "/f/"; 'f' not found.
. 2015-08-07 10:43:16.654 Copying files to remote side failed.
* 2015-08-07 10:43:16.654 (ExtException) **Copying files to remote side failed.**
* 2015-08-07 10:43:16.654 Could not change to "/f/"; 'f' not found.
. 2015-08-07 10:43:16.654 Asking user:
. 2015-08-07 10:43:16.654 Error transferring file 'C:testFile.txt'. ("Copying files to remote side failed.","Could not change to ""/f/""; 'f' not found.")
< 2015-08-07 10:43:16.654 Script: Error transferring file 'C:\testFile.txt'.
< 2015-08-07 10:43:16.654 Script: Copying files to remote side failed.

< 2015-08-07 10:43:16.654 Could not change to "/f/"; 'f' not found.
* 2015-08-07 10:43:16.655 (EScpSkipFile) Error transferring file 'C:\testFile.txt'.
* 2015-08-07 10:43:16.655 Copying files to remote side failed.
* 2015-08-07 10:43:16.655 Could not change to "/f/"; 'f' not found.
. 2015-08-07 10:43:16.655 Script: Failed
> 2015-08-07 10:43:18.436 Script: exit
. 2015-08-07 10:43:18.436 Script: Exit code: 1
. 2015-08-07 10:43:18.436 Disconnected from server
4

1 に答える 1

5

メソッドremotePath引数は次のとおりです。Session.PutFiles

ファイルのアップロード先のフル パス。複数のファイルをアップロードするときは、パス内のファイル名を操作マスクに置き換えるか、省略してください (パスはスラッシュで終わります)。

パスではなく URL を渡します。何のために?でホスト名とプロトコルをすでに指定していますSessionOptions

パスのみを使用してください。

また、パスはターゲット フォルダー名 (ターゲット ファイル名ではない) であるため、スラッシュ (またはファイル名) で終わる必要があります。

string path = "/f/fofd671e-0eee-4c23-932d-4ba32c938c8f/";
...
session.PutFiles(@"C:\testfile.txt", path, false, transferOptions);

WinSCP .NET アセンブリを使用してファイルをアップロードする公式の例を参照してください。

于 2015-08-05T06:16:25.063 に答える