В Windows временный файл с 0 КБ, созданный с использованием базы 64 декодированных данных с использованием file_put_contents - PullRequest
0 голосов
/ 26 октября 2019
  • Основное назначение : загрузить обрезанный файл.
    • Язык : PHP
    • Framework : Codeigniter
    • Библиотека урожая : cropperjs
    • ОС : Windows 10

Я хочу создать временный файл с данными base64, каким-то образом он создается как 0 КБ, то есть нетданные в нем. Я имею в виду ответ: https://stackoverflow.com/a/11579060

По коду, как показано ниже:

$temp_file_path = tempnam(sys_get_temp_dir(), 'user_photo'); // might not work on some systems, specify your temp path if system temp dir is not writeable
$can_crop = true;
$base_64_image = explode( ',', $_POST['image-thumb']);
if(sizeof($base_64_image) > 1) {
    if (file_put_contents($temp_file_path, base64_decode($base_64_image[1]) == false)) {
        $can_crop = false;
    }
} else {
    $can_crop = false;
}

Здесь file_put_contents возвращает фактический размер данных, что означает, что содержимое копируется вфайл, но когда я вижу свой временный файл, он имеет размер 0 КБ, я вижу, есть ли какой-либо контент или нет, путем редактирования, но он был пустым.

Примечание: ранее он работал, если я не взорвалданные изображения, т.е.

data:image/png;base64,AAAFBfj42Pj4'

Но поскольку я анализирую фактическое содержимое и декодирую данные base_64, т.е. AAAFBfj42Pj4, он создает файлы в 0 КБ.

Я искал пару вопросов, ноне помогло.

1 Ответ

1 голос
/ 26 октября 2019

Скобка находится в неправильном месте в вашем состоянии. Должно быть:

if (file_put_contents($temp_file_path, base64_decode($base_64_image[1])) === false) {
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...