1

我有一个脚本,它接受一个文件,操作一些数据,并写入一个输出 .csv 文件。.csv 文件应该可供用户查看和下载。这是 Heroku 上带有 S3 的 rails 应用程序。

现在脚本“逐行”写入硬编码的本地文件系统输出文件。当我将此脚本与 rails、heroku 和 amazon S3 集成时,我是否必须重组脚本以在控制器中逐行构建数组并将其作为一个整体写入 S3?还是我像在本地一样继续逐行写入 S3?

看来我需要在控制器中构建一个数组并发布到 S3?然后控制器“显示”操作将引用该文件以获取视图中使用的实例变量。几乎让我想知道用户是否可以只在客户端制作 csv 而不必制作文件来存储在 S3 上?这是 AJAX 的工作吗?

我现在正在查看 aws-sdk 以访问该文件,就像我访问本地系统上的任何其他文件一样。

原样的粗略示例,每行代码编写:

file_in.each_line do |line|
    #some line manipulation
    file_out << output
end

轻松切换此代码以构建数组然后编写一次......我最初是逐行编写的,所以我没有将整个文件放在一个大数组中......

file_in.each_line do |line|
    #some line manipulation
    @array.push(output)
end
file_out << @array
4

1 回答 1

1

S3 不是本地文件系统 - 您需要在本地构建文件,然后将其发送到 S3(有软件可以使 s3 看起来像一个文件系统,尽管我不知道您是否可以让它在 heroku 上运行)。

如果您的文件很大,您可以进行分段上传,但每个部分(最后一个除外)必须至少为 5MB。

于 2013-01-06T10:34:44.487 回答