这里我试图使用ajax但是每个都在mysql数据库中保存图像 上传图片失败的时间,请帮我解决这个问题。
Controller.rb
def image_converter
sub = TestimonialPicture.new
decoded_file = Base64.decode64(params[:picdata]) unless params[:picdata].nil?
if request.post?
begin
tmpfilename = "#{params[:id]}#{Time.now.to_i.to_s}"
file = Tempfile.new([tmpfilename, '.jpg'])
file.binmode
file.write decoded_file
file.close
sub.testimonialpic = file
if sub.save
sub.update_attributes(:testimonial_id => params[:tid])
msg = "YOur image has been successfully uploaded"
else
msg = "Failed to create submission. Please try again"
end
ensure
file.unlink
end
render :text=>msg
end
end
我创建的图像即将转换为画布 并通过点击保存按钮两个功能即可保存,使用它 控制器我能够获得图像,但无法存储 数据库中。
view.html.erb
$(document).ready(function(){
var element = $("#bgcolor"); // global variable
var getCanvas; // global variable
$("#save_btn").on('click', function () {
html2canvas(element, {
onrendered: function (canvas) {
$("#previewImage").append(canvas);
getCanvas = canvas;
}
});
});
$("#btn-Convert-Html2Image").on('click', function () {
$("#popDiv").hide();
var picdata = getCanvas.toDataURL("image/png");
var pic = picdata.replace(/^data:image\/(png|jpg);base64,/, "");
var tid = $("#tid").val();
$.ajax({
url: "/businessdb/image_converter",
type: "POST",
data: {"pic" : pic, "tid" : tid},
dataType: "json",
success: function(data) {
location.reload();
alert("success");
}
});
});
每次我收到类似IOError(封闭流)的错误
我需要点击保存按钮
将我的图片保存到mysqldatabase中
答案 0 :(得分:1)
有问题的行是
file.close
sub.testimonialpic = file
当mysql2
尝试将IO
保存到BLOB列时,必须打开IO
才能阅读。您只需在保存文件之前显式关闭该文件(即IO)。
解决方案是
file.rewind
sub.testimonialpic = file
并在ensure
版块unlink
之前关闭该文件。