我目前正在使用Gifshot.js在我的网站上创建用户头像。我希望能够存储GIF文件服务器端,但我无法让它工作。问题是我如何正确解码base64编码的GIF文件,通过PHP存储?另外,有没有办法将文件上传为增量数字而不是静态名称?这是我目前的代码:
使用Javascript:
$("#savegif").click(function(){
gifshot.createGIF({
interval: 0.1,
numFrames: 25,
}, function (obj) {
if (!obj.error) {
var image = obj.image,
animatedImage = document.getElementById('animatedgif');
animatedImage.src = image;
var data = animatedImage.src;
$.ajax({
url: "gifsave.php",
method: "POST",
dataType: "text",
data: { data }
});
}
});
});
PHP:
$file = $_POST['data'];
$img = str_replace('data:image/gif;base64,', '', $file);
file_put_contents('images/image.gif', base64_decode($img));
答案 0 :(得分:1)
您可POST
Blob
表示服务器的文件对象,并使用php://input
和fopen()
获取php
的文件内容,请参阅{{ 3}}。
fetch("gifsave.php", {method:"POST", body:blob})
.then(response => response.ok)
.then(res => console.log(res))
.catch(err => console.error(err));
您可以将文件作为块传输到服务器,方法是将Blob
转换为ArrayBuffer
,创建TypedArray
,例如Uint8Array
,{{1} }}作为参数,并使用ArrayBuffer
将文件流式传输到服务器。