У меня есть сценарий Js, который сохраняет изображение в формате .jpg в определенной папке на сервере:Копирование файлов изображений с сервера на диск в PHP
$data = substr($_POST['imageData'], strpos($_POST['imageData'], ",") + 1);
$decodedData = base64_decode($data);
$fp = fopen("imgdownload/cc.jpg", 'wb');
fwrite($fp, $decodedData);
fclose($fp);
Следующим шагом будет для пользователя, чтобы сохранить его на его диске лучше всего было бы открыть диалоговое окно «сохранить как» и выбрать имя и местоположение, но просто заставить загрузить в заданное место было бы мечтой.
Я пробовал:
$file = 'imgdownload/cc.jpg';
if (file_exists($file)) {
header('Content-Description: File Transfer');
header('Content-Type: image/jpg');
header('Content-Disposition: attachment; filename='.basename($file));
header('Expires: 0');
header('Cache-Control: must-revalidate');
header('Pragma: public');
header('Content-Length: ' . filesize($file));
readfile($file);
exit;
}
И другие вещи без успеха. Что я делаю неправильно и как это сделать правильно?
EDIT - это мой JS:
savePicture: function() {
$(this.el).find('canvas').attr('id', 'myCanvas');
var data = document.getElementById("myCanvas").toDataURL();
$.post("api/process.php", {
imageData: data
}, function(data) {
//window.location = data;
});
},
Что именно происходит при загрузке? при первом взгляде одна вещь, которая может быть лучше, - это только ваш тип контента. Также вы используете относительный путь, который может быть проблемой .. так скажем, когда они загружают файл, существует ... что в вашем браузере происходит экстренно? – Soulan
Я не думаю, что вы можете заставить диалог «сохранить как», так как это настройка браузера ... Люди могут выбрать автоматическую загрузку в предпочтительную папку ... – RichardBernards
Что происходит: изображение попадает на сервер (с первая часть кода), а в Chrome в разделе Response сети (Web Developer Tools) я получаю ответ вроде: " 1 запросов | 513 KB переданы HeadersPreviewResponseCookiesTiming PNG IHDR { IDATx^ynQ'Vro # BHFhX06 $ {хр # <с & IʃX4 P1A & 4 [Jb-ZQ/[: yTwy OG} sTeee. ....... " Если речь идет о тип содержимого, я изменил его на изображение/jpg, спасибо за указание на это. – oneday