cURL / Mailing Lists / curl-library / Single Mail

curl-library

Re: libcurl SFTP file upload

From: Dan Fandrich <dan_at_coneharvesters.com>
Date: Sat, 5 Apr 2008 09:12:06 -0700

On Sat, Apr 05, 2008 at 10:44:46AM +0200, Mueller, Alexander wrote:
> This looks for me rather like a command-line call ... I use the C-API and search for a way to do the SFTP Upload with this.
> I tried this call (see code below) as quoted command, but also got errors.

I was trying to show with that command that quote commands are not involved
in uploads. You can use the --libcurl command-line option to turn that
command line into a C program if you want.

> I really appreciate your help, but this document didn't clear the scheme for me. When using WinSCP, I can access our host (treuehandy.de) via SFTP, and there I descend down to a subfolder "treuehandy.de" and then to folder "csv", this is the structure how it should work. I tried using the "~" symbol as proposed by Daniel, but this seems to symbolize a "user home directory", it didn't work, ans in WinSCP this was also not necessary so I wonder if this leads to success.

Does WinSCP use SFTP URLs? If not, then that URL spec isn't relevant. I
don't know what WinSCP does, but what you describe is likely represented
by a URL of either sftp://treuehandy.de/treuehandy.de/csv/file-to-upload or
sftp://treuehandy.de/~/treuehandy.de/csv/file-to-upload

> I have read the documentation of "curl_easy_setopt(CURLOPT_PREQOUTE / CURLOPT_QOUTE / CURLOPT_POSTQUOTE)" several times, but I still don't get it running. My code example (see below) ran with POSTQUOTE, like in the official FTP upload example. When I run it with "CURLOPT_QOUTE" I get the described infinite loop.
>
> What irritates me most: I cannot find out the "PUT" command. The documentation of curl_easy_setopt(CURLOPT_QOUTE) says: "The valid SFTP commands are: chgrp, chmod, chown, ln, mkdir, pwd, rename, rm, rmdir, symlink. (SFTP support added in 7.16.3)". But these are all no upload commands ! So I tried the documented SFTP-Upload command, "put", with the described infinite loop. So what is the upload command ? The one from Dan (see above) also doesn't work, I tried it in my code which follows.

This is the fourth time someone has written this: you can't do uploads with
quote commands! So, please, please, stop trying!

>
> So, here comes the full code as my experimental state is at this moment (only user name was x-ed out):

> curl_easy_setopt(hCurl, CURLOPT_URL, "sftp://treuehandy.de/treuehandy.de/csv/");

URL stands for Uniform Resource Locator and the resource this URL is
pointing to is a directory; you can't upload directories. Since you're
uploading a file, you need a URL that locates a file, such as
sftp://treuehandy.de/treuehandy.de/csv/the-file Try using that and
eliminating any mention of QUOTE commands.

>>> Dan

-- 
http://www.MoveAnnouncer.com              The web change of address service
          Let webmasters know that your web site has moved
Received on 2008-04-05