2011-08-14 109 views
2

你看到file_field提供了一個窗口讓用戶選擇一個特定的文件並上傳到服務器端。但是我想要的只是文件名。我怎麼才能得到文件名,我不需要這個文件本身有什麼建議?rails形式的輔助方法:file_field?

+0

由於您只需要文件名,而不是路徑或實際文件內容,因此可以要求用戶將文件名輸入到文本字段中。 – Zabba

+0

其實,對我來說,我不想輸入文件名.haha – castiel

回答

3

你需要有兩個字段:

  • 隱藏字段來存儲文件名
  • 文件輸入要選擇的文件

例:

<%= file_field_tag :our_file %> 
<%= f.hidden :filename, :id => "hidden_filename" %> 

小的jQuery代碼段:

$(document).ready(function(){ 
    $('input[type=file]').change(function(e){ 
    filename = $(this).val(); 
    $("#hidden_filename").attr("value", filename); 
    # To reset file field if you don't want to uppload a file 
    $(this).attr("value", ""); 
    }); 
}) 
5

不知道你爲什麼會需要這個,但你可以在你的形式

<%= file_field :uploadfile %> 

並在控制器

def upload 
    params[:uploadfile].original_filename 
    .... process the rest of this method .... 
end 

的 「original_filename」 試試這個

將獲得正在上傳的文件的名稱,然後您可以將其存儲到數據庫中。希望這有助於

+0

thx,但是我有個問題,如果我這樣做,文件本身會上傳到服務器端嗎?因爲我只是需要文件的名稱。 – castiel

+0

@castiel不,這個文件不會上傳,因爲你只是請求original_filename。但也檢查下面的答案fl00r,這更好,但都應該工作 – Hishalv