2010-11-26 125 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