Upload files.

Parameters:

Parameters:
See dedicated page for more information.
uploadFile sends local files to remote locations using protocols supported by cURL: HTTP/HTTPS, FTP/FTPS, SFTP/SCP, and presigned URLs (e.g., S3-compatible PUT). It can run:
Returned status 0 indicates success. You can also capture the server response body for auditing or debugging.
Typical uses
Caveats
-Q/--ftp-create-dirs; see tips).Pin 0 (optional, table) — use for batch uploads. Recommended columns:
local_file — absolute or workspace-relative path to the file on disk.url — full destination URL (HTTP(S), SFTP, FTP), or the server root with the path provided separately.remote_file (optional) — server path to upload to (mainly for SFTP/FTP when url is just the host).Column names are case-sensitive and must match the pickers you set in the node.
Partitioning
idUrl (URL)
Destination.
sftp://host/home/user/in/report.csv) or just the host (sftp://host) while providing the path in idRemoteFile.idLocalFile (Column of local files paths)
The local file to upload (per-row or constant). Must be an exact file path (no wildcards).
idRemoteFile (Optional: column of files paths on server)
Remote destination path (used when idUrl doesn’t include a path, mostly for SFTP/FTP). Leave empty when idUrl already has a complete path or for presigned HTTPS URLs.
idLogin / idPass
Optional credentials for FTP/SFTP/HTTP Basic.
Tip: Prefer these fields (or your platform’s secret store) over embedding creds in URLs.
emitError
If ON, a failed transfer raises an action error (recommended for strict pipelines).
getResponse
If ON, appends a column containing the server response body (e.g., API JSON reply) to the output stream. Useful with HTTP APIs.
idDebug
Logging verbosity (nothing, basic, verbose). Start with basic; use verbose only to troubleshoot TLS/proxy/auth.
idOptional
Extra cURL flags (space-separated), e.g.:
--max-time 120 (timeout)--proxy http://proxy.company.local:3128 (proxy)--ftp-create-dirs (ask FTP server to create target dirs)--insecure (TLS testing only; avoid in production)-H "Content-Type: text/csv" (HTTP header)For each row (or once in single-file mode), the node builds a cURL upload command:
PUT with -T <file> (or POST if required by the endpoint; provide headers/body via idOptional).-T <file> to send the file to the server/path.The node streams the file, captures cURL’s exit code, and (optionally) captures the response body.
With emitError ON, any non-zero exit code stops the pipeline.
What the action emits
Data tab: pass-through of your input rows, plus:
status (0 on success, cURL exit code otherwise).response (when getResponse ON) containing the remote server’s reply.Records tab: not used by uploads unless your pipeline separately writes files to recorded data.
Choose your mode:
Fill Login/Password only if required.
Leave Remote file empty unless you’re doing SFTP/FTP with a host-only URL.
Turn emitError ON, idDebug = basic.
(Optional) Turn getResponse ON for HTTP APIs.
Prepare the file you want to upload your file (e.g., %assets%/w3c_iso8859-1.txt).
Open Parameters.
Set URL:
https://s3.gra.perf.cloud.ovh.net/…?X-Amz-Algorithm=…sftp://sftp.example.com.Set Local file: pick or type the exact path (e.g., %assets%/w3c_iso8859-1.txt).
Remote file: only for SFTP/FTP if the URL has no path.
Credentials: fill idLogin/idPass if the server requires auth (SFTP/FTP, HTTP basic).
emitError ON; getResponse ON if you need the server’s reply.
Run and check the Log (transfer details) and Data (status/response).

sftp://sftp.example.com/home/team/in/report.csvrecords/out/report.csv--max-time 120status = 0 in Data; file appears on the SFTP server.ftp://ftp.example.com/incoming/2025/10/report.ziprecords/out/report.zip--ftp-create-dirsstatus = 0 if server permits directory creation.https://storage.example.com/bucket/report.csv?X-Amz-… (presigned)records/out/report.csv-H "Content-Type: text/csv" --max-time 120status = 0; response column contains the storage service JSON (if any).https://api.example.com/uploadrecords/out/report.csv-F "file=@records/out/report.csv" -H "Authorization: Bearer xxxxx"-T with -F to match form-based endpoints.{ "ok": true }).
Status 6 — could not resolve host
Check idUrl host; verify DNS/proxy. If on a corporate network, add --proxy http://proxy:3128.
Status 7 — failed to connect
Firewall/egress or wrong port. Confirm SFTP (22) vs FTPS implicit/explicit modes. Try --max-time 120 and check security rules.
Status 67 — login/authentication failed
Wrong credentials or method. For SFTP, ensure the account can write in the target folder. For HTTPS authorization, add headers via idOptional.
Status 78 — remote file/path not found
For SFTP/FTP, verify idRemoteFile path exists. Use --ftp-create-dirs if allowed. For HTTPS, check the presigned URL has not expired.
Status 23 — write error
Local file unreadable. Confirm path, permissions, and that the file isn’t locked by another process.
TLS errors (35 / certificate)
Corporate MITM or self-signed cert. Test with --insecure (temporary), then install the proper CA or use the official endpoint.
Endpoint expects POST (multipart) but you used PUT
Switch to a form upload: add -F "file=@/path/to/file" in idOptional and ensure the API accepts multipart/form-data.
uploadFile to SFTP with --ftp-create-dirs and emitError ON to fail visible on issues.uploadFile with -H "Content-Type: …" so the object has the correct metadata.