Генерация случайного имени файла при загрузке на сервере
Для того чтобы сохранить кудато в папку на сервере файл выбранный пользователем, необходимо указать его имя. Чтобы имена точно не повторялись, можно поступить например так:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
$answer["error"]=true; $answer["errortext"]="Ошибка сохранения фото (ошибка доступа)"; $uploaddir = WUO_ROOT.'/uploads'; if( ! is_dir( $uploaddir ) ) mkdir( $uploaddir, 0777 ); $uploaddir = WUO_ROOT.'/uploads/'.Date("Y"); if( ! is_dir( $uploaddir ) ) mkdir( $uploaddir, 0777 ); $uploaddir = WUO_ROOT.'/uploads/'.Date("Y")."/".Date("md"); if( ! is_dir( $uploaddir ) ) mkdir( $uploaddir, 0777 ); $files = $_FILES; // полученные файлы foreach( $files as $file ){ $file_name = $file['name']; $file_name = md5(microtime() . rand(0, 9999)).uniqid().".".getExtension1($file_name); if( move_uploaded_file( $file['tmp_name'], "$uploaddir/$file_name" ) ){ $done_files = realpath( "$uploaddir/$file_name" ); $answer["error"]=false; $answer["errortext"]=""; $answer["result"]=$done_files; } } echo json_encode($answer); function getExtension1($filename) { return end(explode(".", $filename)); }; |
Одно Но! тут нет контроля, что пользватель выбрал файл без расширения. Хотя с другой стороны, я например это ограничиваю на уровне выбора файла. Например так:
1 |
<input id="fileinput" type="file" accept="image/*" capture="capture" > |