У меня есть zip-файл в закрытой папке моего веб-сервера. Я хочу сделать файл недоступным для публики, поэтому я хотел использовать php readfile для чтения zip-файла и создания объекта File из zip-файла в javascript. Я не уверен, что это лучший способ сделать что-то подобное, но буду признателен за любое предложение.
Как использовать возвращенные данные для создания объекта File?
Вот мой php-код (getZipFile.php):
<?php
$filename = "abc.zip";
$filepath = "/path/to/zip/";
// http headers for zip downloads
header("Pragma: public");
header("Expires: 0");
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
header("Cache-Control: public");
header("Content-Description: File Transfer");
header("Content-type: application/octet-stream");
header("Content-Disposition: attachment; filename=\"".$filename."\"");
header("Content-Transfer-Encoding: binary");
header("Content-Length: ".filesize($filepath.$filename));
ob_end_flush();
$buffer = readfile($filepath . $filename);
echo $buffer;
?>
И вот мой код javascript
$.ajax({
url: 'getZipFile.php',
error: function(e) {
console.log(e);
},
dataType: 'text',
success: function(data) {
console.log(data);
var parts = [
new Blob([data], {type: 'application/zip'}),
new Uint16Array([33])
];
var f = new File(parts, "myzip.zip");
},
type: 'GET'
});
Я заметил одну вещь: размер исходного Zip-файла составляет 2302 байта, когда я печатаю data.length в функции успеха, длина данных составляет 2287. Должны ли они быть одинаковыми?