1

私はファイルをruby3.2.8アプリケーションにアップロードすることに夢中になっています。あなたの助けが必要です!私はこのコードを試しました:

yamlファイルのアップロードが機能しないのはなぜですか?許可の問題だと思います

しかし、それは機能せず、「パブリック」でファイルを作成せず、一時ファイルを作成するだけです。今日、私は新しい方法を見つけました:

Rails3-ファイルをパブリックディレクトリにアップロードする

だから、見る:

<p style="color: green"><%= flash[:notice] %></p>

<%= form_for :uploadFile, :url => "/upload/uploadfile", :html => { :multipart => true } do |f| %>
  <label for="uploadFile">Select File:</label>
  <%= f.file_field :upload %>
  <%= f.submit "Upload", :disable_with => 'Uploading...' %>
<% end %>

コントローラ:

class UploadController < ApplicationController
  def uploadFile
    require 'fileutils'
    tmp = params[:uploadFile][:upload].tempfile
    file = File.join("public", params[:uploadFile][:upload].original_filename)
    FileUtils.cp tmp.path, file
    flash.now[:notice]="File has been uploaded successfully"
  end
end 

しかし同じ問題。「パブリック」にはファイルがありません:(

ログによると:

Started POST "/upload/uploadfile" for 127.0.0.1 at 2012-11-12 11:19:04 +0100
Processing by UploadController#uploadfile as HTML
  Parameters: {"utf8"=>"✓", "authenticity_token"=>"WI23X2HeanJpQJoRFc8NUJ078yLYpKgRE3VnJDBeccA=", "uploadFile"=>{"upload"=>#<ActionDispatch::Http::UploadedFile:0x47e4238 @original_filename="newCases.yml", @content_type="application/octet-stream", @headers="Content-Disposition: form-data; name=\"uploadFile[upload]\"; filename=\"newCases.yml\"\r\nContent-Type: application/octet-stream\r\n", @tempfile=#<File:C:/Users/Simo/AppData/Local/Temp/RackMultipart20121112-4716-1geiytj>>}, "commit"=>"Upload"}
  [1m[36mSetting Load (0.0ms)[0m  [1mSELECT "settings".* FROM "settings" WHERE "settings"."id" = ? LIMIT 1[0m  [["id", 1]]
  Rendered upload/uploadfile.html.erb within layouts/upload (0.0ms)
Completed 200 OK in 16ms (Views: 0.0ms | ActiveRecord: 0.0ms)

ああ、アップロードファイルはyamlです、何か変更しますか?

私のgemfile:

source 'https://rubygems.org'

gem 'rails', '3.2.8'

# Bundle edge Rails instead:
# gem 'rails', :git => 'git://github.com/rails/rails.git'

gem 'sqlite3'

# Gems used only for assets and not required
# in production environments by default.
group :assets do
  gem 'sass-rails',   '~> 3.2.3'
  gem 'coffee-rails', '~> 3.2.1'

  # See https://github.com/sstephenson/execjs#readme for more supported runtimes
  # gem 'therubyracer', :platforms => :ruby

  gem 'uglifier', '>= 1.0.3'
end

gem 'jquery-rails'

gem "comma", "~> 3.0.3"
gem 'fastercsv', '1.5.4'
4

1 に答える 1

1

たぶん:urlをform_forlikeに追加します

form_for :uploadFile, :url => "/upload/uploadfile"

役立ちます?Rails 3.2.8では、:urlパラメータを追加したことを除いて、アップロードは正常に機能します。

于 2012-11-12T11:19:12.283 に答える