gpt4 book ai didi

php - 图像原始数据的强制下载在 android 2.3 上损坏

转载 作者:行者123 更新时间:2023-11-30 05:52:10 25 4
gpt4 key购买 nike

我正在尝试开发一种机制,通过 php 强制下载来将 Canvas 下载为图像。以下代码适用于 chrome 桌面,但不适用于 Android 2.3 普通浏览器。

HTML 和 JavaScript:

<script> function downloadImage()
{

document.getElementById('action').value = 'downloadfile';
document.getElementById('source').value = document.getElementById('finalimage').src;
document.getElementById('user').value = userId;
document.getElementById('imageForm').submit();
}
</script>
<html>
<form id="imageForm" action="" method="post" enctype="application/x-www-form-urlencoded">
<input type="hidden" name="source" id="source" value=""/>
<input type="hidden" name="action" id="action" value="savefile"/>
<input type="hidden" name="user" id="user" value=""/>
</form>
</html>

PHP代码:

<?php

header("Content-Type: application/octet-stream");
header("Content-Disposition: attachment; filename=\"colouringbook-page.jpg\"");
header("Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0");
header("Pragma: no-cache");
header("Content-transfer-encoding: binary");

$source = $_REQUEST['source'];
$source = base64_decode(substr($source, strpos($source, ",")+1));
header("Content-Length: " . strlen($source));
print $source;
exit;
?>

我遇到的问题首先是“下载失败”。然后,当我设法成功下载时,图像已损坏。

[更新]

我正在通过仅输出到浏览器然后尝试从那里保存图像来进行测试。我正在显示图像,但在保存图像时,文件命名方案是 *.html

看起来它可能是一个 android stock 浏览器错误。我能够将图像保存到服务器,但仍然无法从那里输出缓冲区来下载图像。我必须输出一个常规的 html 标签,然后在 android 上执行“另存为”以下载图像。

最佳答案

我最近在管理 HTTP header 方面遇到了一些麻烦:请确保您没有在发送前压缩数据的模块(例如:apache2 的 mod_deflate)。当你发送你的 HTTP 应答时,你用 header("Content-Length: ". strlen($source)); 表明它的长度。如果使用压缩,则此长度为 False。也许 Android 浏览器仍在等待数据并最终关闭图像,认为它已损坏。

如果这是你的问题,你可以尝试关闭此脚本的压缩(例如 apache2:apache_setenv('no-gzip', '1');)或者您可以尝试不发送 Content-Length 信息。

编辑:您应该使用真正的 mimetype 来更好地帮助 Android 管理您的图像。

关于php - 图像原始数据的强制下载在 android 2.3 上损坏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14073242/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com