Мне нужно загрузить файлы из javascript в php для двоичного чтения, и кажется, что в начале добавляется дополнительный 0 байт, а в конце пропускается один.
Код Javascript:
let formData = new FormData();
formData.append("files[]", fileInput.files[0]);
uploadButton.classList.add("is-loading");
fetch(url, {
method: "POST",
body: formData
}).then(response => {
if(response.status === 200) showContent(fileInput.files[0].name);
});
PHP-код:
if(isset($_FILES["files"])) {
$name = $_FILES["files"]["name"][0];
$tmp = $_FILES["files"]["tmp_name"][0];
$path = "";
do { $newName = str_replace(".uexp", "", $name) . "-" . generateRandomString(); $path = "../filestore/$newName.uexp"; } while(file_exists($path));
move_uploaded_file($tmp, $path);
$str = file_get_contents($path);
$byteArray = unpack("C*", $str);
$_SESSION["Name"] = $name;
$_SESSION["Path"] = $path;
$_SESSION["File"] = serialize($byteArray);
}
Когда я считываю файл в каталоге хранилища файлов (то есть после move_uploaded_file), он отличается от первоначально загруженного.
Файл, который был первоначальноЗагрузка начинается с (в шестнадцатеричном формате): EA 00 00 и заканчивается (в шестнадцатеричном формате): 83 2A 9E.Файл, который можно найти в папке хранилища файлов, начинается с (в шестнадцатеричном формате): 00 EA 00 и заканчивается (в шестнадцатеричном формате): 83 2A.
В результате файл больше не может быть прочитаноригинальное приложение.Я использую PHP 7.2 и IIS в качестве моей платформы.
Что-нибудь, что мне не хватает?