2012-02-27 397 views
2

我一直在嘗試做簡單的文件上傳,但是我無法找到一個能夠做到的gem,它們全都看起來像是圍繞着 圖像。我只想要基本的.zip文件上傳。有人可以指示我做一個這樣做的寶石,或者是一個建立自己的自定義 上傳的教程。但是,如果沒有,我會創建自己的文件上傳,但後來我面臨着以下問題在數據庫中存儲上傳文件的路徑

問題:

如何在數據庫中存儲的文件的路徑時,用戶點擊上傳按鈕?

下面是場景:

形式包括以下內容:

Title box: 
File select box: 
Upload button: 

數據庫表只包括兩列,在title (Title)並在文件系統中file's path (FilePath)

用戶填寫標題,在他們的系統上瀏覽文件,並點擊上傳按鈕,文件需要 存儲在第E盤,可以說/public/uploads/file1.zip同時寫入mysql數據庫上傳的標題以及 的路徑,現在居住在/public/uploads/file1.zip.

在另一頁的實際文件,我可以只是簡單地查詢數據庫檢索標題和文件路徑將顯示標題和文件的鏈接/路徑,用戶只需點擊並下載即可。

它會在頁面上顯示如下:

標題 - 下載

所以即會議文件爲27 - 下載

其中,「標題」 =用戶提交的文件標題和「下載「=您點擊的實際鏈接將從磁盤 中檢索文件並開始下載。這需要來自數據庫的一個查詢來檢索文件的標題和路徑。查詢 部分我知道該怎麼做。它只是將文件上傳到該目錄的部分,將該特定文件的目錄存儲在數據庫中,並且它是用戶提交的標題。

任何建議,示例和資源將不勝感激。謝謝你的時間。

回答

1

rails guides讀取uploading files然後閱讀CarrierWave README。基本上它是:

# in the model 
mount_uploader :archive, ArchiveUploader, mount_on: :archive_path 

# in the controller action 
@record = YourModel.new(params[:record]) # moves the file from server upload path to CW cache dir 
@record.save # moves the file from CW cache dir to final fs dir, and stores path in mounted_on column 

# in the form 
<%= f.file_field :archive %> 

# in the view 
<%= link_to 'Download', @record.archive_url %> 

文件系統路徑將存儲在您所掛載的表列中。

+0

是的,我碰到這個來了。但是,我的問題是如何使用Carrierwave上傳文件,將文件存儲在文件系統中,並將文件的路徑存儲在數據庫中。謝謝回覆。 – user1104783 2012-02-27 12:22:40

+0

我編輯了答案,現在清楚了嗎? – clyfe 2012-02-27 17:20:35

+0

是的,謝謝。 – user1104783 2012-02-28 19:04:05

0

正如@clyfe提到的,carrierwave是上傳文件的方式,因爲您希望carrierwave將文件存儲在磁盤中並將路徑存儲在db中。

其自述文件本身有大部分的細節設置它

一旦您設置正確的它很容易和最重要它與軌道2.x和3.x中的

下面是一個很好的screen cast you may want to check

HTH

相關問題