私はこの問題と 2 日間戦ってきましたが、次のステップを克服できません。
Wistia API を使用してビデオをアップロードしようとしていますが、ビューからコントローラーにファイル名とデータを渡す瞬間に行き詰まりました。
公式のhttp://wistia.com/doc/upload-api#examples_using_ruby API ドキュメントを使用していますが、「シンボルを文字列に暗黙的に変換していません」というエラーが発生し続けます。
これに関するヘルプやヒントをいただければ幸いです。
私のビュー index.html.erb:
<h1>File Upload</h1>
<%= form_tag('/uploads', method: :post, multipart: true) do %>
<%= file_field 'pic', 'data' %></p>
<%= submit_tag "Upload" %>
<%= debug params %>
<% end %>
私のコントローラーはコントローラーをアップロードします:
class UploadsController < ApplicationController
def home
end
def uploadFile
end
def create
@xyz = post_video_to_wistia(:pic, :data)
end
require 'net/http'
require 'net/http/post/multipart'
def post_video_to_wistia(name, path_to_video)
uri = URI('https://upload.wistia.com/')
http = Net::HTTP.new(uri.host, uri.port)
http.use_ssl = true
# Construct the request.
request = Net::HTTP::Post::Multipart.new uri.request_uri, {
'api_password' => '<API_PASSWORD>',
'contact_id' => '<CONTACT_ID>', # Optional.
'project_id' => '<PROJECT_ID>', # Optional.
'name' => '<MEDIA_NAME>', # Optional.
'file' => UploadIO.new(
File.open(path_to_video),
'application/octet-stream',
File.basename(path_to_video)
)
}
# Make it so!
response = http.request(request)
return response
end
end
パラメーター:
{"utf8"=>"✓",
"authenticity_token"=>"/dRprM7ZjQzzb9N9OErk0Dy4tSt/+zsUldpOed8jCqY=",
"pic"=>{"data"=>#<ActionDispatch::Http::UploadedFile:0x3ef23e0 @tempfile=#<Tempfile:C:/Users/Maciek/AppData/Local/Temp/RackMultipart20140527-7076-bo3tzy>,
@original_filename="example.jpg",
@content_type="image/jpeg",
@headers="Content-Disposition: form-data; name=\"pic[data]\"; filename=\"example.jpg\"\r\nContent-Type: image/jpeg\r\n">},
"commit"=>"Upload"}