如何将压缩的base64图像转换为文件或Blob以进行Firebase上载(JavaScript)
错误代码:“存储/无效参数”,消息:“Firebase存储:索引0处的如何将压缩的base64图像转换为文件或Blob以进行Firebase上载(JavaScript),javascript,html,css,web-applications,progressive-web-apps,Javascript,Html,Css,Web Applications,Progressive Web Apps,错误代码:“存储/无效参数”,消息:“Firebase存储:索引0处的put中的无效参数:应为Blob或文件。” 下面是一个JS代码片段,该图像被压缩并转换为base64,然后保存到会话存储中,以便在加载时检索,我的计划也是如此 从会话存储中获取映像并发送到firebase时的代码段 提前向所有人和社区表示深深的感谢 在将图像存储在sessionstorage中之前,您是否已尝试将其发送到firebase?至少这将消除或确认问题是sessionstorage而不是其他问题。我需要在上载图像之前对
put
中的无效参数:应为Blob或文件。”
下面是一个JS代码片段,该图像被压缩并转换为base64,然后保存到会话存储中,以便在加载时检索,我的计划也是如此
从会话存储中获取映像并发送到firebase时的代码段
提前向所有人和社区表示深深的感谢
在将图像存储在sessionstorage中之前,您是否已尝试将其发送到firebase?至少这将消除或确认问题是sessionstorage而不是其他问题。我需要在上载图像之前对其进行预览,因此session Storage有时需要执行一些不需要的操作来进行故障排除。。
function process() {
const file = document.querySelector("#upload").files[0];
if (!file) return;
const reader = new FileReader();
reader.readAsDataURL(file);
reader.onload = function (event) {
const imgElement = document.createElement("img");
imgElement.src = event.target.result;
imgElement.onload = function (e) {
const canvas = document.createElement("canvas");
const MAX_WIDTH = 300;
const scaleSize = MAX_WIDTH / e.target.width;
canvas.width = MAX_WIDTH;
canvas.height = e.target.height * scaleSize;
const ctx = canvas.getContext("2d");
ctx.drawImage(e.target, 0, 0, canvas.width, canvas.height);
const srcEncoded = ctx.canvas.toDataURL(e.target, "image/jpeg");
// you can send srcEncoded to the server
sessionStorage.setItem("image",srcEncoded);
var image = new Image();
console.log(srcEncoded);
image.src = srcEncoded;
document.body.appendChild(image);
};
};
}
const Upbtn = document.getElementById('fileButton');
Upbtn.addEventListener('click',function(e){
console.log('Upload Button');
//Get File
const file = sessionStorage.getItem('image');
console.log('Grabed');
//Create Storage reference
const storageRef = firebase.storage().ref('/pictures/' + file);
console.log('location');
//Create Blob
//Upload file
const task = storageRef.put(file);
console.log('Submitted');
});