2014-11-06 2 views
1

У меня есть этот PHP-код, который загружает фотографию с iPhone в этот каталог. Проблема в том, что каждый раз, когда загружается фотография, она перезаписывает предыдущую. Как я могу получить его, чтобы все изображения были сохранены?Загруженный файл всегда перезаписан

<?php 
$name = "image"; 
$path = "uploaded/".$name.".jpg"; 
$output = "{\"response\":\"false\"}"; 
if(move_uploaded_file($_FILES['image']['tmp_name'], $path)) { 
    $output = "{\"response\":\"true\"}"; 
} 
echo $output; 
?> 
+0

Используйте 'sha1_file()' или 'md5_file()' в качестве имени файла http://php.net/manual/en/function.sha1-file.php http://php.net/manual/ en/function.md5-file.php – PeeHaa

ответ

1

Каждый раз, когда вы загружаете файл, вы перемещаете его в тот же каталог с тем же именем.

Есть много вещей, которые вы можете сделать самым простым существом.

// produces something like image-1415317895-545c0987ce42c5 
$name = "image-" . uniqid(time() . "-"); 

Вы также должны проверить, что загруженный файл действительно является изображением.

$info = getimagesize($_FILES['image']['tmp_name']); 

if (is_array($info) && array_key_exists('mime', $info) && $info['mime'] === 'image/jpeg') { 
    move_uploaded_file($_FILES['image']['tmp_name'], $path); 
} 

Ресурсы:

uniqid()
time()
getimagesize()

+0

Это сработало. Огромное спасибо. Если вы не возражаете, я хотел бы задать вам еще один вопрос. Теперь, когда файлы хранятся, как я могу просмотреть их в своем браузере? Я хочу создать очень простое html-страницу, которая просто отображает фотографии. Есть какие-то мысли? Когда я набираю фактический адрес файла php в своем браузере, я получаю это. {"response": "false"} Когда я хочу, чтобы он показывал файлы в этой папке – user2442173

+0

@ user2442173, пожалуйста. Чтобы ответить на этот вопрос, существует так много неизвестных особенностей. Например: загружены ли загруженные файлы только для загрузки? Поделились с другими? Вы используете базу данных? Есть ли учетные записи пользователей? ... (список можно продолжать и продолжать) Я предлагаю вам попробовать несколько вещей самостоятельно, исходя из требований (о том, что я ничего не знаю о вашем приложении). Если у вас все еще есть проблемы, задайте другой вопрос. :) – robbmj

+0

Спасибо. Я задам еще один вопрос, но вы так быстро ответили идеальным ответом, я думал, что попрошу вас. В принципе, я хочу, чтобы кто-то заходил на веб-страницу и просматривал фотографии, загруженные из приложения. Я не использую базу данных или что-то необычное. Этот простой скрипт PHP загрузил фотографии в папку. Мне просто нужен html-код, который отобразит их. Я разработчик iOS, но не имею никаких реальных знаний PHP. – user2442173

-1

Они переопределены, потому что они имеют такое же имя.

Для решения этого мы должны сделать каждое имя уникально, я думаю, что лучший способ сделать это так:

$name = "image_" . sha1 (openssl_random_pseudo_bytes (100)); 

Таким образом, вы абсолютно уверены, что имя будет уникальным.

В случае, если OpenSSL не установлен, mt_random() - отличная альтернатива.

$name = "image_" . sha1 (mt_random (0, 1000000)); 
+0

openssl не всегда установлен. http://php.net/manual/en/openssl.requirements.php – robbmj

+0

@robbmj Конечно, это не исключает, что это очень надежный способ генерации случайного имени файла. Если кто-то должен держаться подальше от OpenSSL, то всегда есть [mt_random()] (http://php.net/manual/en/function.mt-rand.php) Позвольте мне отредактировать мой ответ. – Vanitas

+0

Случайный не означает уникальность. – robbmj

Смежные вопросы