2010-11-26 85 views
2

我對rails的ruby相當陌生,我試圖用dnduploader.js來實現一個拖放文件功能。我將文件發送到控制器,但我不確定如何將控制器中的文件保存到本地文件系統。這裏是我的代碼片段,如果任何人都可以提供幫助。謝謝。用Rails保存文件的Ajax請求

下面是我用幫我聯繫:http://onehub.com/blog/posts/designing-an-html5-drag-drop-file-uploader-using-sinatra-and-jquery-part-1/

$("#drop_target").dndUploader({ 
    url : "/upload", 
    method : "PUT" 
}); 

if (dataTransfer.files.length > 0) { 
    $.each(dataTransfer.files, function (i, file) { 
     var xhr = new XMLHttpRequest(); 
     var upload = xhr.upload; 

     xhr.open($this.data('method') || 'POST', $this.data('url'), true); 
     xhr.setRequestHeader('X-Filename', file.fileName); 

     xhr.send(file); 
    }); 
}; 

這是我不知道該怎麼辦?我看到上載請求發生在chrome中,但我不確定如何將文件保存到文件系統。

def upload 
    render :text => "uploaded #{env['HTTP_X_FILENAME']} - #{request.body.read.size} bytes -- #{params[:upload].to_yaml}" 
end 

回答

2

看起來文件上傳爲「request.body」。所以你可以做如下的事情:

fp = File.open("/local_path/local_file", "wb") 
fp.write(request.body.read) 
fp.close