【发布时间】:2019-04-15 00:06:42
【问题描述】:
在 Rails 5.2 上,我将画布保存为 blob,并通过 Active storage 将其发送到 azur 存储。
在我的机器上,使用开发环境,png 被完美地创建并完美地发送到 azur blob,然后我将它附加到模型上。
但是在测试机器(带有测试环境)上,当我将 blob 附加到图像时,我得到一个 ActiveStorage::IntegrityError。
发送 png 的 javascript
var project_id = 2;
var csrf_token = $("meta[name=csrf-token]").attr("content");
var project_metadata = new FormData();
project_metadata.append("utf8","✓");
project_metadata.append("authenticity_token",csrf_token);
project_metadata.append("projet_id",project_id.toString());
project_metadata.append("commit","Create Projet");
var file_name = "rdc.png";
var upload_file_field = that.drawing.getElement().toBlob(function(blob) {
var file = new File([blob], file_name, {type: "image/png", lastModified: Date.now()});
var url = "/projects/"+project_id.toString()+"/store_plan"
project_metadata.append("images",file,file_name);
$.ajax({
type: "POST",
url: url,
data: project_metadata,
processData: false,
contentType: false,
success: function(){
console.log("images save");
}
});
})
控制器
def store_plan
@project.images.attach(io: params["images"].to_io, filename: params["images"].original_filename)
end
storage.yml
azure_dev:
service: AzureStorage
storage_account_name: "XXXXX"
storage_access_key: "..."
container: projectsdevelopment
test:
service: AzureStorage
storage_account_name: "XXXXX"
storage_access_key: "..."
container: projectstest
我的开发机器是 mac book pro,我的测试机器是 Ubuntu。
不明白为什么我在测试中得到一个 ActiveStorage::IntegrityError 而在开发中一切正常?
感谢您的帮助。
【问题讨论】:
-
我不知道这是否相关,但是在尝试将一堆虚拟文件批量上传到记录时,我遇到了类似的问题。我最终只是打电话给
rescue来摆脱错误。不理想,但我的所有文件都已成功附加,所以我认为如果你可以发送一个最小的测试 repo,也许值得在 GH 上发布一个问题。
标签: ruby-on-rails rails-activestorage