0

我試圖將文件上傳到Wistia.com。因爲它是一個ActionDispatch對象,所以從params獲取path_to_video變量的正確方法是什麼。如何從ActionDispatch對象中提取路徑

控制器是這樣的:

def create 
post_video_to_wistia(params[:upload][:file].tempfile) 
end 

上傳的代碼看起來是這樣的

def post_video_to_wistia(path_to_video) 
    uri = URI('https://upload.wistia.com/') 
    http = Net::HTTP.new(uri.host, uri.port) 
    http.use_ssl = true 
    request = Net::HTTP::Post::Multipart.new uri.request_uri, { 
    'api_password' => [WISTIA_PASSWORD], 
    'file' => UploadIO.new(File.open(path_to_video), 
    'application/octet-stream', 
    File.basename(path_to_video) 
    ) 
    } 
    response = http.request(request) 
    return response 
end 

這裏是PARAMS:

Parameters: {"upload"=>{"file"=>#<ActionDispatch::Http::UploadedFile:0x007fa8201d58d8 @original_filename="123.mp4", @content_type="video/mp4", @headers="Content-Disposition: form-data; name=\"upload[file]\"; filename=\"123.mp4\"\r\nContent-Type: video/mp4\r\n", @tempfile=#<File:/var/15741-1xiizbz>>}, "commit"=>"Send", "id"=>"2"} 
+0

我得到的迴應#以下錯誤<網:: HTTPUnauthorized:0x007f965a79f638 > – grabury

回答

0

params[:file]將讓你的ActionDispatch對象,然後你可以從中獲取所需的任何東西。

mount_uploader :image, ImageUploader 

到獲得分配給它的圖像,其中模型「:形象」爲您的文件字段的名稱

+0

我想這post_video_to_wistia(PARAMS [:上傳] [:文件])和 '文件'=> UploadIO.new( file.tempfile, '應用/八位字節流', file.original_filename ) – grabury

-1

當我忘了加我得到這個錯誤。

如果你的文件中的字段名稱不是「形象」,你必須改變:圖像和ImageUploader以反映您的名字,即

mount :picture, PictureUploader