【发布时间】:2015-03-20 08:06:39
【问题描述】:
目前我们有一个方法可以返回带有格式化 CSV 文件的字符串。
string = EXPORT.tickets
我们需要像这样将该 csv 文件上传到 ftp 服务器
ftp = Net::FTP.new(server, username, password)
ftp.putbinaryfile(string)
然而,string 变量显然是一个字符串,而不是 putbinaryfile 方法所期望的二进制文件。我看到了两种方法来做到这一点,
- 首先使用
File将string变量转换为文件 - 将字符串直接转换为带有
StringIO之类的文件
这些看起来是可行的选择吗?如果是这样,我将如何处理,提前谢谢!
编辑:
由于 putbinaryfile 方法正在寻找文件路径而不是实际文件,看来我最好的办法是从 string 变量创建一个文件。谁能举例说明如何做到这一点?
【问题讨论】:
-
这不是 100%,
putbinaryfile需要二进制文件的 PATH(可能是字符串)。我可能会先创建一个文件(参见devdocs.io/ruby/file#method-c-new)然后上传它。上传后不要忘记删除文件:) -
你是对的,它正在寻找 PATH。你觉得我使用 Ruby Tempfile 类怎么样? devdocs.io/ruby/tempfile
-
听起来不错!还有一件事:我认为您可以使用
puttextfile而不是putbinaryfile,因为 CSV 只是文本,但请务必先对此进行测试... -
好的,谢谢,我编辑了我的问题。基本上我从一开始就将字符串放入实际文件中遇到了麻烦,所以如果您有任何想法,请随时发布答案:)