Making FTP requests
Since v1.277.0 GoErp supports FTP requests in dynamics. This feature allows to upload or download files to/from servers through FTP protocol as well as a couple of additional actions like moving files, getting directory list, etc.
Since v1.301.3 FTPGet and FTPPut are deprecated and will be removed in future versions.
Instead, use FTP as a method while initializing the request and pass action name in cmd
through PostParam.
Input parameters
Initialization of the request is made through FTP method type. Like so:
<input type="hidden" name="CustomApi.Api.FTP.file" value="localhost:2121">. Value in this case
contains the FTP server host with port. Port is mandatory parameter. If provider not specified the
port, then the default ports for ftp 21,2121, and for ftps 990.
Actions request and response parameters
All requests expecting credentials and cmd to be passed through PostParam type:
cmd- FTP command (or action). All available commands are listed below.schema-ftporftps. If not set, then GoErp will try to get it from the link and if fails then usesftp.username- FTP server username.password- FTP server password.
get
Input parameters:
cmd-getpath- Path to the file on the server. Example:/path/to/file.txt.
Response:
{
"status": "success",
"base64File": "base64 encoded file content"
}Example
<form method="post">
<input type="hidden" name="CustomApi.Api.FTP.r" value="localhost:2121">
<input type="hidden" name="CustomApi.Api.PostParam.r.schema" value="ftp">
<input type="hidden" name="CustomApi.Api.PostParam.r.username" value="test">
<input type="hidden" name="CustomApi.Api.PostParam.r.password" value="test">
<input type="hidden" name="CustomApi.Api.PostParam.r.cmd" value="get">
<input type="text" name="CustomApi.Api.PostParam.r.path" value="/path/to/file.txt">
<button type="submit">Go</button>
</form>store
Input parameters:
cmd-storepath- Path to the file on the server. Example:/path/to/file.txt.file- file to upload (must be part of themultipart/form-dataform).
Response:
{
"status": "success"
}Example
<form method="post" enctype="multipart/form-data">
<input type="hidden" name="CustomApi.Api.FTP.r" value="localhost:2121">
<input type="hidden" name="CustomApi.Api.PostParam.r.schema" value="ftp">
<input type="hidden" name="CustomApi.Api.PostParam.r.username" value="test">
<input type="hidden" name="CustomApi.Api.PostParam.r.password" value="test">
<input type="hidden" name="CustomApi.Api.PostParam.r.cmd" value="store">
<input type="text" name="CustomApi.Api.PostParam.r.path" value="/path/to/file.txt">
<input type="file" name="CustomApi.Api.PostParam.r.file" value="">
<button type="submit">Go</button>
</form>storeBody
Input parameters:
cmd-storepath- Path to the file on the server. Example:/path/to/file.txt.body- content of the file to upload.encoding- encoding of the file content if applied. Empty for no encoding. Supported values:base64.
Response:
{
"status": "success"
}Example
<form method="post">
<input type="hidden" name="CustomApi.Api.FTP.r" value="localhost:2121">
<input type="hidden" name="CustomApi.Api.PostParam.r.schema" value="ftp">
<input type="hidden" name="CustomApi.Api.PostParam.r.username" value="test">
<input type="hidden" name="CustomApi.Api.PostParam.r.password" value="test">
<input type="hidden" name="CustomApi.Api.PostParam.r.cmd" value="storeBody">
<input type="text" name="CustomApi.Api.PostParam.r.path" value="/path/to/file.txt">
<input type="text" name="CustomApi.Api.PostParam.r.encoding" value="base64">
<!-- "Hello GoErp!" encoded with base64 -->
<input type="file" name="CustomApi.Api.PostParam.r.body" value="SGVsbG8gR29FcnAh">
<button type="submit">Go</button>
</form>rename or move
Input parameters:
cmd-renamefromPath- Path to the file on the server to rename.toPath- New path to the file on the server. Directory will be created if not exists.
Response:
{
"status": "success"
}Example
<form method="post">
<input type="hidden" name="CustomApi.Api.FTP.r" value="localhost:2121">
<input type="hidden" name="CustomApi.Api.PostParam.r.schema" value="ftp">
<input type="hidden" name="CustomApi.Api.PostParam.r.username" value="test">
<input type="hidden" name="CustomApi.Api.PostParam.r.password" value="test">
<input type="hidden" name="CustomApi.Api.PostParam.r.cmd" value="rename">
<input type="text" name="CustomApi.Api.PostParam.r.fromPath" value="/path/to/file.txt">
<input type="text" name="CustomApi.Api.PostParam.r.toPath" value="/path/to/archive/file.txt">
<button type="submit">Go</button>
</form>remove
Removing root directory is not allowed.
Input parameters:
cmd-removepath- Path to the file or folder on the server to remove.
Response:
{
"status": "success"
}Example
<form method="post">
<input type="hidden" name="CustomApi.Api.FTP.r" value="localhost:2121">
<input type="hidden" name="CustomApi.Api.PostParam.r.schema" value="ftp">
<input type="hidden" name="CustomApi.Api.PostParam.r.username" value="test">
<input type="hidden" name="CustomApi.Api.PostParam.r.password" value="test">
<input type="hidden" name="CustomApi.Api.PostParam.r.cmd" value="remove">
<input type="text" name="CustomApi.Api.PostParam.r.path" value="/path/to/file.txt">
<button type="submit">Go</button>
</form>nameList
Displaying the names of files and directories in the specified path (subdirectories not included). Every element in the list has detailed information about entry.
Input parameters:
cmd-nameListpath- Path to the directory.
Response:
{
"status": "success",
"data": [
"testencoded.json",
"old-archive",
"testbody.json"
]
}Example
<form method="post">
<input type="hidden" name="CustomApi.Api.FTP.r" value="localhost:2121">
<input type="hidden" name="CustomApi.Api.PostParam.r.schema" value="ftp">
<input type="hidden" name="CustomApi.Api.PostParam.r.username" value="test">
<input type="hidden" name="CustomApi.Api.PostParam.r.password" value="test">
<input type="hidden" name="CustomApi.Api.PostParam.r.cmd" value="nameList">
<input type="text" name="CustomApi.Api.PostParam.r.path" value="/path/to/dir">
<button type="submit">Go</button>
</form>list
Displaying detailed information of files and directories in the specified path (subdirectories not included).
Input parameters:
cmd-listpath- Path to the directory.
Response:
Type- 0 for file, 1 for directory.
{
"status": "success",
"data": [
{
"Name": "archive",
"Size": 4096,
"Mode": "drwxr-xr-x",
"ModeBits": 2147484141,
"ModTime": "2025-03-25T13:47:39+02:00",
"Type": "dir"
}
]
}Example
<form method="post">
<input type="hidden" name="CustomApi.Api.FTP.r" value="localhost:2121">
<input type="hidden" name="CustomApi.Api.PostParam.r.schema" value="ftp">
<input type="hidden" name="CustomApi.Api.PostParam.r.username" value="test">
<input type="hidden" name="CustomApi.Api.PostParam.r.password" value="test">
<input type="hidden" name="CustomApi.Api.PostParam.r.cmd" value="list">
<input type="text" name="CustomApi.Api.PostParam.r.path" value="/path/to/dir">
<button type="submit">Go</button>
</form>Error response
Payload structure for all actions is the same:
{
"error": "550 Could not access file: open /tmp/my-data: no such file or directory",
"status": "error"
}