我快到了,但我在解码文件时遇到了问题。解码文件时不正确。
我用来上传文件的代码:
createDataSet: function() {
var data = new FormData();
data.append('original_filename', this.get('fileName'));
data.append('datafile', this.get('newData'));
data.append('project_id', this.get('content.id'));
data.append('name', this.get('content.name'));
$.ajax({
url: '/data_sets.json',
data: data,
cache: false,
contentType: false,
processData: false,
dataType: 'json',
type: 'POST',
success: function(data) {
alert('ok');
},
error: function(xhr, data, errorThrown) {
alert('error');
}
});
}
在 Rails 方面,我试图用以下方法来解决这个问题:
def create
# take care of the attachement
datasetfilename = Pathname.new(params[:original_filename]).basename
newfile = File.open(datasetfilename, 'w') do |f|
f.write(Base64.decode64(params[:datafile]))
end
@dataset = DataSet.new
@active_data_set = @dataset.active_data_sets.build
@active_data_set.project_id = params[:project_id]
@active_data_set.save
@dataset.name = params[:name]
@dataset.filename = datasetfilename
@dataset.tempfilename = @dataset.savefile newfile
@dataset.save
end
如果我使用File.open(datasetfilename, 'w')
我会收到这样的错误Encoding::UndefinedConversionError - "\xAB" from ASCII-8BIT to UTF-8
。另一方面,如果我打开'wb'
结果文件是混合的并且无法读取。
我已经为文件编码添加了元标记,<meta charset="utf-8" />
但没有任何区别。
如果有人有任何提示,将不胜感激。