通过回形针通过外部脚本上传文件

时间:2015-07-21 22:12:52

标签: python ruby-on-rails paperclip

我正在尝试创建一个适用于客户端的CMS应用程序。该应用程序当前有一个文档类,用paperclip上传文档。

除此之外,我们还运行一个访问数据库的python脚本,获取给定事件的大量信息,创建提议word文档,并在正确的事件下将其上传到数据库。

这一切都有效,但应用程序无法识别该文档。如何创建一个能够正确上传文档的python脚本,以便回形针知道发生了什么?

这是我的回形针控制器:

def new
    @event = Event.find(params[:event_id])
    @document = Document.new
end

def create
    @event = Event.find(params[:event_id])
    @document = @event.documents.new(document_params)
    if @document.save 
        redirect_to event_path(@event) 
    end
end

private

def document_params
    params.require(:document).permit(:event_id, :data, :title)
end

模型

validates :title, presence: true
    has_attached_file :data
    validates_attachment_content_type :data, :content_type => ["application/pdf", "application/msword"]

这是python代码。

f = open(propStr, 'r')

binary = psycopg2.Binary(f.read())

self.cur.execute("INSERT INTO documents (event_id, title, data_file_name, data_content_type) VALUES (%d,'Proposal.doc',%s,'application/msword');" % (self.eventData[0], binary))

self.con.commit()

1 个答案:

答案 0 :(得分:0)

你应该使用Ruby来编写脚本,因为它可以加载你需要的任何模型信息或其他类。

但假设您的要求决定了python的使用,请注意Paperclip不会将文档存储在数据库表中,只会存储文件'元数据。实际文件默认存储在/ public目录中的文件系统中(也可能是s3等,具体取决于您的配置)。我会确保您实际上将文件保存到正确的预期目录。根据{{​​3}}的默认路径是:

:rails_root/public/system/:class/:attachment/:id_partition/:style/:filename

因此您必须进行另一个SQL查询以检索新记录的ID。我不相信pdf具有:style属性,因为你不使用imagicmagick来调整它们的大小,所以建立一个看起来像这样的路径:

/public/system/documents/data/000/000/123/my_file.pdf

并将其保存在python脚本中。

相关问题