2012-05-31 39 views
1

我正试图在服务器上使用Carrierwave并在客户端上使用Uploadify来实现上传器。从客户端看来,它的所有工作和服务器上的记录都保存在数据库中,但物理上传的文件永远不会保存到文件系统。请记住,我是Rails的新手。Rails 3,Uploadify和Carierwave

这是我上传:

class ShapefileUploader < CarrierWave::Uploader::Base 

    storage :file 

    # simple path for debugging 
    def store_dir 
    "uploads" 
    end 

end 

我的模型:

class DataRecord < ActiveRecord::Base 

    # not too sure if this belongs here at all, documentation is not too specific. 
    require 'carrierwave/orm/activerecord' 

    mount_uploader :shapefile, ShapefileUploader 

end 

有一两件事我不完全从Carrierwave文档明白的是关于确保您加载后加载CarrierWave部分你的ORM。我不完全明白它的意思。

我的控制器:

class DataRecordsController < ApplicationController 
skip_before_filter :verify_authenticity_token, :only => [:update, :create] 

    def index 
    @folder = Folder.find(params[:folder_id]) 
    @data_types = DataType.all 
    end 

    def create 
    data_record = DataRecord.new({:shapefile => params[:Filedata], :folder_id => params[:folder_id], :user_file_name => params[:Filename], :data_type_id => 6}) 
    data_record.save! 
    end 

    def update 

    end 

end 

从实际的文件创建操作旁白上传我手动设置调试数据的其余部分。

这一切似乎没有任何错误的工作。

这里是发布数据:

Parameters: {"Filename"=>"id_rsa.pub", "Filedata"=>#<ActionDispatch::Http::UploadedFile:0x007fc67836eb88 @original_filename="id_rsa.pub", @content_type="application/octet-stream", @headers="Content-Disposition: form-data; name=\"Filedata\"; filename=\"id_rsa.pub\"\r\nContent-Type: application/octet-stream\r\n", @tempfile=#<File:/tmp/RackMultipart20120531-4919-147n4qu>>, "Upload"=>"Submit Query", "folder_id"=>"74"} 

SQL INSERT:

INSERT INTO "data_records" ("data_type_id", "folder_id", "shapefile", "status", "uploaded_date_time", "user_file_name", "validated", "validation_results", "validation_to_send") VALUES ($1, $2, $3, $4, $5, $6, $7, $8, $9) RETURNING "id" [["data_type_id", 6], ["folder_id", 74], ["shapefile", "id_rsa.pub"], ["status", 0], ["uploaded_date_time", nil], ["user_file_name", "id_rsa.pub"], ["validated", 0], ["validation_results", nil], ["validation_to_send", nil]] 

我知道有问候一些问题闪烁下探cookies,但我想我已经解决此工作了调试目的通过跳过检查创建操作上的真实性标记。我已将上传文件夹的安全权限更改为全球读取/写入。我在github上Carrierwave文档遇到的另一个困惑是如下代码:

u.avatar = File.open('somewhere') 

难道这需要?如果是这样,为什么和它做什么?

帮助将不胜感激。谢谢!

回答

1

想通了!上传的文件将被放入/ public/uploads。可能是一个菜鸟的错误,但如果在文档中更好地解释这个错误会很好。