如何在 Windows 使用 FTP 上传文件到 Linux 服务器上

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在 Windows 使用 FTP 上传文件到 Linux 服务器上相关的知识,希望对你有一定的参考价值。

参考技术A 你的linux上已经开启了
FTP服务
的话,那么执行如下命令:
ftp
linux服务器
IP地址。
put
文件名。
如果你需要上传很多的文件的话,那么建议你使用
FTP工具
,比如:
flashfxp
cuteftp
leapftp
等工具都可以实现的。
参考技术B 对方是ftp服务器吗?是的话先在flashxp里快速连接,但不知道需不需要密码?如果是可以打开意味着是允许访客,但访客一般没有上传权限埃
如果你知道密码,不知道flashfxp怎么用?左边窗口时本地(你的)文件,右边就是ftp的,从左边拖到右边即可。

如何在 HTTP 请求中发送文件并通过 Mule 中的 FTP 将其上传到文件服务器

【中文标题】如何在 HTTP 请求中发送文件并通过 Mule 中的 FTP 将其上传到文件服务器【英文标题】:How send a file in an HTTP request and upload it to file server via FTP in Mule 【发布时间】:2018-03-28 22:45:18 【问题描述】:

我想在 HTTP POST 请求中发送文件,然后让 Mule 使用 FTP 将文件上传到服务器上的文件目录。看起来 FTP 连接器将有效负载保存到文件目录,但这是通过 null 并且空文件被 FTP 写入目录。

我在使用 Postman 的 raml 和 http 请求中将二进制/八位字节流作为媒体类型取得了一些成功,但文件没有打开,看起来它可能已损坏,当我使用 form-data 作为媒体时输入 raml 和 http 请求,它在 message.inboundAttachments 中显示为键值对,但如何让 FTP 连接器从 inboundAttachments 写入。我尝试将其设置为显示为 javax 对象的有效负载,但在将其写入文件目录时出现问题。我该怎么做?最好的方法是什么?文件将是 files >= 1 并且可能是不同的文件类型。我目前只是用一个文件来测试它。

另外,当文件被写入时,它被命名为 28f42420-b325-11e7-8ffb-dcb320524153.dat。如何指定名称,因为它看起来像 message.inboundProperties.originalFilename 为空?

我正在使用 Anypoint Studio 6.2 和 Mule 3.8.3 以及 Postman 进行 http 调用,因为 Mule 控制台似乎没有提供在请求中发送文件的选项。

RAML

  /ftp:
    displayName: FTP Test 
    description: Send file to directory using FTP
    post:
      description: Send file
      body:
        binary/octet-stream:
        multipart/form-data:
        application/x-www-form-urlencoded:
          properties:
            file:
              description: The file to be uploaded
              required: true
              type: file
      responses:
        200:
          body:
            application/json:

当前的 XML 流

<flow name="sendFtpFile">
    <set-payload value="#[message.inboundAttachments.file]" doc:name="Set Payload"/>
    <ftp:outbound-endpoint host=$host port="21" path=$filePath user=$user password=$pwd connector-ref="FTP" responseTimeout="10000" doc:name="FTP"/>
</flow>  

谢谢

【问题讨论】:

【参考方案1】:

将多个文件发送到 Mule api/endpoint 的 RAML 可以定义为在回答下面的帖子时提到-

Send multiple Files in HTTP request using RAML

在 Mule api 中读取这些文件,您可以使用 for-each 构造,如下所示可能有用:

<foreach doc:name="For Each" collection="#[message.inboundAttachments]">
       <set-payload value="#[payload.dataSource.content]" doc:name="Set Payload"/>
       <byte-array-to-string-transformer doc:name="Byte Array to String"/>
       <logger message="Content :- #[payload]" level="INFO" doc:name="Logger"/>

</foreach>

阅读后,您可以根据需要编辑或转换文件,并使用 set-attachment

将其添加为附件
<set-attachment attachmentName="requiredFile.xml" value="#[payload]" contentType="text/xml" doc:name="Attachment"/>

然后您可以将其发送到所需的 FTP 连接器

【讨论】:

谢谢。我希望将文件名命名为原始文件名 + 时间戳。有没有办法获取这些信息? message.inboundProperties.originalFilename 似乎为空 非常感谢您的帮助。它清除了我关于如何在 Mule 中传递文件的许多疑问。谢谢

以上是关于如何在 Windows 使用 FTP 上传文件到 Linux 服务器上的主要内容,如果未能解决你的问题,请参考以下文章

如何通过ftp在windows系统上传文件到linux

C#如何将大文件上传到ftp站点

在Windows命令行中将子文件夹上载到FTP

Windows通过FTP上传下载文件到Linux

ftp上传问题,

我在linux上安装了ftp,那如何把linux上的文件下载到windows