2012-11-12 58 views
1

我瘋了上傳一個文件到我的紅寶石3.2.8應用程序。我需要你的幫助!我想這樣的代碼:文件上傳不成功,爲什麼?

Why yaml file upload does not work? I think permission problems

,但它不工作,在「公」不創建的文件,但只有創建的臨時文件。今天,我發現了一個新的思路:

Rails 3 - upload files to public directory

所以,陽臺:

<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' 

回答

1

也許添加:url到form_for like

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

會有幫助嗎? 隨着鐵軌3.2.8你的上傳工作正常,除了我添加:url參數。

+0

我也有導軌3.2.8,我已經添加了你的提示,但是......沒有。 可能不是由於代碼而是其他問題?許可證或其他..你在你的應用程序中設置了一些東西? –

+0

不,全新的應用程序。也許這個問題是由Content-Type引起的:application/octet-stream? –

+0

我甚至不知道該說什麼,我該如何改變它? –