使用AJAX调用强制下载图像

时间:2015-02-03 08:21:13

标签: javascript php jquery

我想在ajax调用后下载保存的图像。我在网站上有一个画布,我发送到一个php文件。我已经设法将临时图像保存到服务器,但我希望在此之后有一个下载对话框。

我的PHP到目前为止:

define('UPLOAD_DIR', 'images/');
$img = $_REQUEST['imgBase64'];
$img = str_replace('data:image/png;base64,', '', $img);
$img = str_replace(' ', '+', $img);
$data = base64_decode($img);
$file = UPLOAD_DIR . uniqid() . '.png';
$success = file_put_contents($file, $data);

$quoted = sprintf('"%s"', addcslashes(basename($file), '"\\'));
$size   = filesize($file);

header('Content-Description: File Transfer');
header('Content-Type: application/octet-stream');
header('Content-Disposition: attachment; filename=' . $quoted);
header('Content-Transfer-Encoding: binary');
header('Connection: Keep-Alive');
header('Expires: 0');
header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
header('Pragma: public');
header('Content-Length: ' . $size);

我的javascrpt:

$.ajax({
type: "POST",
url: "./ajax/base64ToImage.php",
data: { 
    imgBase64: dataURL
}
}).done(function(o) {
    console.log('saved'); 
    console.log(o); 
});

文件保存正确,但我只返回一个空字符串。如何强制下载该呼叫?

0 个答案:

没有答案