2014-12-27 8 views
1

Мне нужно знать код, как переименовать файл, прежде чем он будет загружен на мой сервер в php-скрипте. Я напишу свой php-код.Переименовать файл перед сохранением на сервере PHP

Мне это нужно, потому что я загружаю изображение с телефона, и я не хочу его перезаписывать.

Могу ли я достичь этого?

<?php 

$file_path = "uploads/"; 

$file_path = $file_path . basename($_FILES['uploaded_file']['name']); 
if(move_uploaded_file($_FILES['uploaded_file']['tmp_name'], $file_path)) { 
    echo "success"; 
} else{ 
    echo "fail"; 
} 
?> 

ответ

0

Для переименования файла в Android, вы можете сделать:

String file_path = <file path off your existing file you want to rename> 
File from = new File(file_path,"from.txt"); 
File to = new File(file_path,"to.txt"); 
from.renameTo(to); 

Этот код будет работать как для файла, хранящегося во внутренней или внешней памяти. Просто для записи на внешнее хранилище помните, что для вашего Android-манифеста необходимо добавить android.permission.WRITE_EXTERNAL_STORAGE.

+0

Да, я знаю этот код. Но вы видите его приложение, которое захватывает изображение, поэтому представьте себе, что миллионы людей захватывают его. Так что я не могу стоять на точной, мне просто нужно на случайном расстоянии. Подождите! На линии Файл, могу ли я поставить код, который будет генерироваться случайным союзником? – BiggDawgg

+0

наверняка вы можете унифицировать имя файла, используя user_id + currenttimemillillies или какую-то другую логику. –

+0

плохо помните о своем коде. Хороший, используйте его позже. – BiggDawgg

0

напишите ваш код, как показано ниже.

$filename = $_FILES['upload_file']['name']; 
    $newname = 'alteredtext'.$filename; // you can also generate random number and concat on start. 
    $tmp_path = $_FILES['upload_file']['tmp_name']; 
    if(move_uploaded_file($mp_path, $newname)) { 
     echo "success"; 
    } else{ 
     echo "fail"; 
    } 
+0

Позвольте мне видеть ... но вы указали на точный файл на первой строке справа? Мне нужно php для сканирования, и после того, как вы видите, как о, ничего себе, я получил дубликат. И после этого не переписывать его просто для генерации случайного имени. Возможно ли это? – BiggDawgg

+0

то, что вы можете сделать, это проверить только что созданное имя файла в каталоге, существует ли файл или нет, а затем продолжить загрузку, если вы хотите, чтобы я сделал правильный код для этого, дайте мне знать :) –

+0

Да, уверенный отзыв :))) – BiggDawgg

0

При перемещении файла вам не нужно использовать имя, переданное в массиве $ _FILES. Вы можете создать любое имя, которое вы хотите (при условии, что путь действителен) и передать его как второй аргумент move_uploaded_file. Если вы хотите получить полуслучайное имя, вы можете сгенерировать случайное число, а затем хеш его или что-то создать имя файла.

Если вы хотите проверить, во-первых, если файл существует, то переименовать его, чтобы иметь числовой суффикс, вы можете сделать это:

<?php 

$base_path = "uploads/"; 

$file_path = $base_path . basename($_FILES['uploaded_file']['name']); 
if(file_exists($file_path)) { 
    $ctr = 0; 
    do { // increment an index to append to the filepath 
     $ctr++; 
     $file_path = $base_path . basename($_FILES['uploaded_file']['name']) . "_$ctr"; 
    } while(file_exists($file_path)); 
} 

if(move_uploaded_file($_FILES['uploaded_file']['tmp_name'], $file_path)) { 
    echo "success"; 
} else{ 
    echo "fail"; 
} 
?> 

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

+0

вы дали мне хороший намек, плохо постарайтесь понять, что вы в основном говорите и добиваетесь этого. – BiggDawgg

+0

Человек, которого вы так много сделали, много благодаря! – BiggDawgg

+0

@ user4396430 Отлично! Рад, что смог помочь! – superultranova

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