ruby-on-rails - Rails Active_storage ActiveStorage::IntegrityError 测试
问题描述
在 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 并且在开发中一切正常?
谢谢你的帮助。
解决方案
解决方案
我最终使用fetch
而不是,$.ajax({})
它在双方都有效。
推荐阅读
- angular - TypeScript/Angular:向路由器中的数据属性添加接口
- java - Java HttpClient 实现 Curl .pem 文件
- powershell - 无法在 powershell 中选择变量的列名
- spring - Spring,JPA,Hibernate,按预期数量递增/递减变量
- python - 如何处理python中的巨型列表/矩阵?(不可分块)
- reactjs - 什么是 Apollo 中的片段匹配器
- sql - CAST/CONVERT 问题 算术溢出错误
- c# - 如何使用 Xamarin.Essentials 将 PDF 作为 EmailAttachment 附加?
- azure - 如何使用 azure 流分析查询语言更新 cosmos db 中的值?
- javascript - JavaScript 地图对象类型