File Uploader v1.0

Переименовать файл при загрузке в php

Я делаю простую загрузку файлов script прямо сейчас. Все работает хорошо, но когда я загружаю другой файл с тем же — script просто перезаписывает его. Итак, я хочу, чтобы переименовать каждый загруженный файл в случайное имя. (Пример 12jfhhhhhhasa. Extension). Вот что я до сих пор:

    
Please choose a file:


1) < $uploadpath = $uploadpath . basename( $_FILES['fileup']['name']); // gets the file name $sepext = explode('.', strtolower($_FILES['fileup']['name'])); $type = end($sepext); // gets extension list($width, $height) = getimagesize($_FILES['fileup']['tmp_name']); // gets image width and height $err = ''; // to store the errors // Checks if the file has allowed type, size, width and height (for images) if(!in_array($type, $allowtype)) $err .= 'The file: '. $_FILES['fileup']['name']. ' not has the allowed extension type.'; if($_FILES['fileup']['size'] > $max_size*1000) $err .= '
Maximum file size must be: '. $max_size. ' KB.'; // If no errors, upload the image, else, output the errors if($err == '') < if(move_uploaded_file($_FILES['fileup']['tmp_name'], $uploadpath)) < echo 'Success!'; echo '
File: '. basename( $_FILES['fileup']['name']). ''; echo '
File type: '. $_FILES['fileup']['type'] .''; echo '
Size: '. number_format($_FILES['fileup']['size']/1024, 3, '.', '') .' KB'; echo '

File path: '; > else echo 'Unable to upload the file.'; > else echo $err; > ?>

поэтому измените $uploadpath = $uploadpath . basename( $_FILES[‘fileup’][‘name’]); генерировать уникальное имя вместо того, чтобы просто слепо использовать то, что предоставил загрузчик . Ваш проверочный код также довольно отвратительный, и вы просто предполагаете, что загрузка прошла успешно.

Источник

Переименование при загрузке через форму

Помогите пожалуйста, все перерыл уже! Как сделать переименование файла при загрузке через форму. Например,
Пользователь загружает файл с произвольным именем .doc и ему нужно ввести данные в 4 формы:
Форма1: группа
Форма2: фамилия
форма3: имя
форма4: номер
..
То есть загруженный на сервер файл должен иметь следующее имя: группа_фамилия_имя_номер.doc
Напишите пожалуйста скрипт..

Переименование файлов при загрузке
Необходимо переименовывать загруженный файл, если выбрана переменная newfilename $id = $_GET;.

Ресайз фотки при загрузке на сайт и её переименование
Привет всем!Помогите мне пожалуйста если можете.2 недели как изучаю PHP, до этого изучал HTML,и вот.

Ошибка при добавлении данных в бд через форму
вот action: <? require_once ‘../config.php’; $name_post = $_POST; $cat = $_POST; .

Ошибка при добавлении записи через форму в БД
Делаю админ-панель на сайте и возникла проблема, вылетает ошибка при попытке отправить данные. .

Эксперт PHP

$filename = $group . '_' . $lastname . '_' . $firstname . '_' . $number . '.' . $extension;

Эксперт PHP

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 28
form method="post" action="main.php"> strong>Номер Группы:strong>br /> input type="text" name="group" size="30"/> br /> strong>Тип работы (Л-лабораторная, П-практическая, К-курсовая, Д-доклад):strong>br /> input name="type" type="text" size="30" /> br /> strong>Код Дисциплина (Пример: СБД)strong>br /> input name="disc" type="text" size="30" /> br /> strong>Номер семестраstrong>br /> input name="sem" type="text" size="30" /> br /> strong>Номер работыstrong>br /> input name="number" type="text" size="30" /> br /> strong>Ваша Фамилия:strong>br /> input name="lastname" type="text" size="30" /> br /> strong>Ваше имя:strong>br /> input name="firstname" type="text" size="30" /> br /> form> form action="main.php" method="post" enctype="multipart/form-data"> input type="file" name="filename">br> input type="submit" value="Загрузить">br> form>
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
 $allowed_filetypes = array('.doc','.docx'); // допустимые форматы. $max_filesize = 524288; // Допустимый размер загружаемого файла. $upload_path = 'upload/'; // Директория для загрузки. $new_name = "000001"; // Новое имя для файла.(типа получено динамически =) ) $filename = $group . '_' . $lastname . '_' . $firstname . '_' . $number . '.' . '.doc'; $ext = substr($filename, strpos($filename,'.'), strlen($filename)-1); if(strlen($_FILES['filename']['tmp_name'])  1) die('Сперва укажите файл для загрузки.'); if(!in_array($ext,$allowed_filetypes)) die('Данный формат не поддерживается.'); if(filesize($_FILES['filename']['tmp_name']) > $max_filesize) die('Файл превышает допустимые значения.'); if(!is_writable($upload_path)) die('Директория закрыта от записи. обратитесь к системному администратору.'); if(move_uploaded_file($_FILES['filename']['tmp_name'],$upload_path . $filename)) die('Ваш фаил успешно загружен. . $upload_path . $filename . '">смотреть 
загрузить ещё'
); else echo 'При загрузке возникли ошибки. Попробуйте ещё раз.'; ?>

Эксперт PHP

Лучший ответ

Сообщение было отмечено ArtemSpb как решение

Решение

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
form method="post" action="main.php" enctype="multipart/form-data"> strong>Номер Группы:/strong>br /> input type="text" name="group" size="30"/> br /> strong>Тип работы (Л-лабораторная, П-практическая, К-курсовая, Д-доклад):/strong>br /> input name="type" type="text" size="30" /> br /> strong>Код Дисциплина (Пример: СБД)/strong>br /> input name="disc" type="text" size="30" /> br /> strong>Номер семестра/strong>br /> input name="sem" type="text" size="30" /> br /> strong>Номер работы/strong>br /> input name="number" type="text" size="30" /> br /> strong>Ваша Фамилия:/strong>br /> input name="lastname" type="text" size="30" /> br /> strong>Ваше имя:/strong>br /> input name="firstname" type="text" size="30" /> br /> input type="file" name="file">br> input type="submit" value="Загрузить">br> /form>
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 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56
 /** * Функция для получения данных из POST * @param string $key - ключ нужно переменной * * @return значение по ключу */ function post( $key ){ return isset( $_POST[$key] ) ? trim( $_POST[$key] ) : null; } # Допустимые форматы файлов $allowed_filetypes = array( 'doc', 'docx' ); # Допустимый размер загружаемого файла $max_filesize = 1382288; # Директория для загрузки $upload_path = 'upload/'; # Массив для получения данных от пользователя $data = array(); # Получаем данные из формы $data['group'] = post('group'); $data['lastname'] = post('lastname'); $data['firstname'] = post('firstname'); $data['number'] = post('number'); $file = $_FILES['file']; # Тут можно проверить, заполнены ли данные # . # Получаем расширение файла $extension = pathinfo( $file['name'], PATHINFO_EXTENSION ); # Формируем имя файла $filename = implode( '_', $data ) . '.' . $extension; if( $file['error'] ) die('Сперва укажите файл для загрузки.'); if( !in_array($extension, $allowed_filetypes) ) die('Данный формат не поддерживается.'); if(filesize($file['tmp_name']) > $max_filesize) die('Файл превышает допустимые значения.'); if( !is_writable($upload_path) ) die('Директория закрыта от записи. Обратитесь к системному администратору.'); if( move_uploaded_file($file['tmp_name'], $upload_path . $filename)) die('Ваш файл успешно загружен. . $upload_path . $filename . '">смотреть 
загрузить ещё'
); else echo 'При загрузке возникли ошибки. Попробуйте ещё раз.'; ?>

Но если укажите там кириллические символы — то файл сохранится с некорректным именем, в таком случае имя нужно будет перекодировать в кодировку, которую использует файловая системы Вашей операционной системы.

Источник

PHP ПЕРЕИМЕНОВАТЬ ФАЙЛ ПРИ ЗАГРУЗКЕ

При загрузке файлов на сервер PHP предоставляет возможность переименовать загруженный файл. Для этого необходимо использовать функцию move_uploaded_file().Данная функция принимает два параметра. Первый параметр – это имя временного файла, который был создан во время загрузки файла на сервер, а второй параметр – это новое имя файла, которое должно быть установлено.Пример кода на PHP для переименования файла при загрузке: if(isset($_FILES[‘file’][‘name’]) && $_FILES[‘file’][‘name’] != ») < $temp_name = $_FILES['file']['tmp_name']; $new_name = "new_file_name.jpg"; move_uploaded_file($temp_name, $new_name);>В данном примере, если имя загружаемого файла задано и не является пустым, имя временного файла получается из массива $_FILES[‘file’][‘tmp_name’] и устанавливается новое имя файла – new_file_name.jpg. Затем функция move_uploaded_file() копирует временный файл в директорию с новым именем файла.Использование данной функции позволяет переименовывать загружаемые файлы на сервер без необходимости создавать дополнительные функции или классы.

Загрузка файла на сервер и обработка на PHP (Часть-2) — Базовый курс PHP-7

#50 Уроки PHP — Учим язык PHP, Загрузка файлов на сервер на языке PHP

Подмена файла при скачивании. На JavaScript и на PHP — прячем файл от пользователя

PHP. unlink — Удаление файлов — 61

32 — Уроки PHP. Скачивание файлов в PHP (readfile)

wb047 PHP загрузка файла на сервер и его скачивание

Перемещение файлов на PHP

PHP — загрузка одного или нескольких файлов

Источник

Как изменить имя файла при загрузке?

необходимо при загрузке файла на сервер изменить имя файла. например есть изображение image.jpg надо что бы при загрузке изменилось на idпользователя_item_image.jpg
вот код для загрузки файла на сервер

  function upload($filename, $pach) < $idUser=JUserHelper::getProfile()->id; // устанавливаем директорию загрузки файла $uploadfile = $pach.basename($_FILES[$filename]['name']); if(!empty($filename)) < // Ограничения размера загружаемого файла if($_FILES[$filename]['size'] >1024*2*1024) < return("Размер файла превышает 2 мегабайта"); >// Проверяем загружен ли файл if(is_uploaded_file($_FILES[$filename]['tmp_name'])) < // Если файл загружен успешно, перемещаем его // из временной директории в конечную if(copy($_FILES[$filename]['tmp_name'],$uploadfile)) < return("OK! Файл успешно загружен."); >else < return(''/*. $_FILES[$filename]['tmp_name'].$pach */.$_FILES[$filename]['name'].' - не является правильно загруженным файлом или не может быть перемещён из временной директории.'); > > else < switch($_FILES[$filename]['error']) < case 1: echo "Размер файла превышает допустимый."; break; case 2: echo "Размер файла превышает допустимый."; break; case 3: echo "Загружаемый файл был получен только частично."; break; case 4: echo "Файл не был загружен!"; break; >> > else < return('Не указан файл для загрузки!'); >> ?> ?>

Ivanq

if(copy($_FILES[$filename]['tmp_name'], "myid_or_something_else_$uploadfile")) return("OK! Файл успешно загружен.");

т.е. для джумлы актуально будет
$idUser=JUserHelper::getProfile()->id;
if(copy($_FILES[$filename][‘tmp_name’], «$idUser_item_$uploadfile»))
return(«OK! Файл успешно загружен.»);

Ivanq

Ivanq: // устанавливаем директорию загрузки файла
$uploadfile = $pach.basename($_FILES[$filename][‘name’]);

Источник

Как переименовать файл, если такой файл есть при загрузке?

Здравствуйте. Загружаю файл и проверяю, есть ли такой файл:

$filename = "upload/".$_FILES["filename"]["name"]; if (file_exists($filename)) < echo "Файл $filename существует"; move_uploaded_file($_FILES["filename"]["tmp_name"], "upload/".$_FILES["filename"]["name"]); >

Подскажите, как дописать хоть куда-нибудь в название файла «+1»?
Чтобы, если файл называется good.jpg — закачался бы файл 1good.jpg или good1.jpg
Если файл 1good.jpg есть — закачался бы файл 2good.jpg и т.д.
То есть, чтобы работало по принципу «новая папка 1», «новая папка 2»

RomaZveR

Это совершенно небезопасный и непонятно зачем нужный велосипед. Генерируйте наименования загружаемых файлов сами, строго следите за расширением.

$valid_formats = [ 'jpg', 'jpeg', 'png', 'gif', 'bmp' ]; $ext = pathinfo($_FILES['filename']['name'], PATHINFO_EXTENSION); if (!isset($valid_formats[$ext])) < return 'error'; >$filename = md5($_FILES['filename']['name'].uniqid()). '.' .$ext; if (!is_file('upload/'.$filename)) < move_uploaded_file($_FILES['filename']['tmp_name'], 'upload/'.$filename); >

1) Получить название файла
2) Записать в переменную, отбросив расширение «.jpg», только делайте внимательно, чтобы отбрасывало именно разрешение, а не так, чтобы у вас файл kartinka.leto.bmp и вы отбросили .leto.bmp
3) Если приписанного числа нет, то добавить в конце 1, если изначально file1.bmp, то отрезать единицу (или любое другое число), прибавить к ней +1 и подписать обратно
4) Приклеить обратно расширение
5) .
6) PROFIT!
P>S> В 3 пункте, добавляйте через _1, чтобы проще было улавливать разницу между названием файла и его копией, чтобы получалось file.bmp file1.bmp, file_1.bmp file1_1.bmp чтобы видеть разницу между ними

qqignatqq, на сколько мне известно, нет в пхп функции, которая сама разбирает, переименовывает и собирает имя файла обратно по шаблону

Мне не важно, где именно он пропишет цифру. Главное, чтобы в расширение он её не писал. Пусть будет «1 новая папка», «2 новая папка». Этого он тоже не может?

qqignatqq,
$NewFilename = ‘1_’ . $Filename

Но при повторной загрузке файла в 5ый или 6ой раз, вы об этом не узнаете, если вы хотите, чтобы было видно все загрузки, то надо писать проверку имени файла, при наличии 1_file улавливать число перед именем, брать его, ++1, и отдавать имя.
Это не костыли, это грамотно реализованные функции. При этом не забывайте делать проверку, чтобы в форму загрузки вам не записали и не отправили чего лишнего, в виде исполняемого файла с вредоносным кодом

Источник

Читайте также:  Запуск приложения питон через командную строку
Оцените статью