Вы можете в сценарии загрузки использовать временный файл (в временном каталоге), и если загрузка была завершена, вы можете просто переместить файл в конечное местоположение с хорошим именем файла.
Это общее решение этой проблемы.
Для получения временного файла (независимого от среды) используйте функцию PHP:
resource tmpfile ( void )
Документация для этого вы можете найти на http://pl.php.net/manual/en/function.tmpfile.php
Эта функция возвращает дескриптор вашего нового чистого временного файла.
Но если вы используете эту функцию, вы должны скопировать файл перед закрытием дескриптора, потому что этот файл был удален при вызове fclose(handle)
. Чтобы убедиться, что файловый буфер очищен, вы можете в конце вызова fflush(handle)
.
Или, если вы не хотите использовать функцию tmpfile(void)
, вы можете сделать это вручную.
string tempnam ( string $dir, string $prefix )
Префикс - это префикс к вашим файлам, позволяющий легко сгруппировать ее для удаления или чего-то еще. Вызовите эту функцию, чтобы получить уникальный файл в типизированном каталоге, так как каталог содержит временный каталог в вашей среде, вы можете получить это, вызвав:
string sys_get_temp_dir ( void )
Затем, когда у вас есть самоконтроль, запишите в него данные для загрузки и закройте.
Скопируйте этот файл в ваше окончательное местоположение, используя:
bool copy ( string $source, string $dest [, resource $context ] )
И удалите свой временный файл, чтобы очиститься в своей среде:
bool unlink ( string $filename [, resource $context ] )