Как скопировать содержимое файла во временный файл на PHP? [дубликат]
этот вопрос уже есть ответ здесь:
- как получить временный путь к файлу? 5 ответов
Я попытался это:
$temp = tmpfile();
file_put_contents($temp,file_get_contents("$path/$filename"));
но я получаю эту ошибку: "предупреждение: file_put_contents () ожидает, что параметр 1 будет строкой"
Если я попробую:
echo file_get_contents("$path/$filename");
он возвращается к экрану файла содержимое в виде длинной строки. Где я ошибаюсь?
2 ответов
tmpfile()
создает временный файл с уникальным именем в режиме чтения-записи (w+) и возвращает дескриптор файла для использования с fwrite, например.
$temp = tmpfile();
fwrite($temp, file_get_contents("$path/$filename"));
файл автоматически удаляется при закрытии (например, при вызове fclose (), или при отсутствии оставшихся ссылок на дескриптор файла, возвращаемый tmpfile ()), или при завершении скрипта. посмотреть php ref.
в Примере, который вы даете, вы хотите tempnam()
, а не tmpfile()
.
tempnam()
создает временный файл и возвращает путь к нему в виде строки. Затем вы можете передать эту строку в file_put_contents. Вы должны помнить, чтобы вручную удалить временный файл, как только вы закончите с ним.tmpfile()
создает временный файл и возвращает файловый ресурс / указатель использовать сfwrite()
и другие функции работы с файлами. Кроме того, после завершения выполнения скрипта, временный файл создаетсяtmpfile()
автоматически удаляется.
вот ваш пример скрипта с использованием tempnam()
вместо tmpfile()
:
$temp = tempnam(sys_get_temp_dir(), 'TMP_');
file_put_contents($temp, file_get_contents("$path/$filename"));