溢出者!
我在将文件保存到服务器上的目录时遇到了一个奇怪的问题。流程如下:
- 从画布数据生成图像。
- 使用 PHP 通过 AJAX 将图像写入我的服务器。(目录权限为 777)
- 利润。
到目前为止,我唯一遇到的问题是在使用库存的 Android“浏览器”浏览器时。我已经能够使用该项目支持的浏览器列表成功保存图像。(Safari、Firefox、Chrome、IE9+)。但是,当我在 Android 浏览器上进行测试时,PHP正在将文件保存到正确的目录,但为 0 字节。我正在测试 Android v. 4.1.1
我的问题是为什么在这种情况下我得到一个 0 字节的文件?我该如何补救?
我一直在谷歌和 stackoverflow 上寻找答案,到目前为止,我必须测试大约 20 种不同的解决方案,但无济于事。我想知道这个错误是否是我很容易错过的,因为我已经盯着同一个代码这么久了。
这是 AJAX 调用:(CoffeeScript)
$.ajax
type: "POST"
url: "#{servicesSrc}image-utils.php"
data:
post_method: "save_image"
image_data: image.src
name_prefix: @currentServiceString + "_"
success: (response) =>
doStuff(response) # <-- redacted method name
error: (jqXHR, textStatus, errorThrown) ->
console.error("storeTempUserImage :: Error: #{textStatus}", errorThrown)
并且 PHP: ('REDACTED/FILE/PATH') 是正确的,并且在每个场景中都使用过,但我无法显示。
$randomID = get_random_string();
$imageData = $_POST["image_data"];
$imageData = str_replace("data:image/jpeg;base64,", "", $imageData);
$imageData = str_replace(" ", "+", $imageData);
$data = base64_decode($imageData);
$namePrefix = (isset($_POST["name_prefix"])) ? $namePrefix = $_POST["name_prefix"] : $namePrefix = "";
$absoluteURL = $namePrefix.$randomID.".jpg";
$destinationURL = "REDACTED/FILE/PATH" . $absoluteURL;
$fp = fopen($destinationURL, "wb");
fwrite($fp, $data);
fclose($fp);
echo $absoluteURL;
以及正确保存图像和未正确保存图像的示例输出: twitter_jKbxRIt3NRw8Nd1ucJFcDSrMUBPs9H7M.jpg 98 KB(97,866 字节) twitter_LLAwIET5VJDO4LXvD4O0hsngnj2UYata.jpg 0 B(0 字节)
提前感谢您的帮助!