2013-06-21 4 views
0

Я использую uploadify в проекте, и у меня есть сценарий php, который переименовывает один файл, но я не уверен, как повторить процесс, если более одного файла загружается на время?Uploadify переименовать несколько файлов

Мой PHP скрипт ниже ...

$targetFolder = '/img/uploads'; // Relative to the root 

$verifyToken = md5('unique_salt' . $_POST['timestamp']); 

if (!empty($_FILES) && $_POST['token'] == $verifyToken) { 

    $tempFile = $_FILES['Filedata']['tmp_name']; 
    $targetPath = $_SERVER['DOCUMENT_ROOT'] . $targetFolder; 

    $fileParts = pathinfo($_FILES['Filedata']['name']); 
    $unique_hash = hash_hmac("md5", file_get_contents($_FILES['Filedata']['name']), SALT); 
    $targetFile = rtrim($targetPath,'/') . '/' . $unique_hash .'-'.$_POST['userId'].'.'. $fileParts['extension']; 


    #$targetFile = rtrim($targetPath,'/') . '/' . $_FILES['Filedata']['name']; 

    // Validate the file type 
    $fileTypes = array('jpg','jpeg','gif','png'); // File extensions 
    $fileParts = pathinfo($_FILES['Filedata']['name']); 

    if (in_array($fileParts['extension'],$fileTypes)) { 
    move_uploaded_file($tempFile,$targetFile); 
    echo '1'; 
    } else { 
    echo 'Invalid file type.'; 
    } 
} 
+0

использовать петлю 'foreach' – Perry

+0

Перед тем, что? –

ответ

0

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

При отправке все файлы вместе вы будете использовать в вашей форме что-то вроде этого: name=userfile[] так что вы можете Foreach файлы, как это:

foreach ($_FILES as $file) 
{  
$uploadfile = $uploaddir . basename($file['name']); 
if (!move_uploaded_file($file["tmp_name"], $uploadfile)) 
{ 
    echo set_e('error','Image ['.$i.'] not uploaded',''); 
} 
} 
0

Вы пытались сделать больше, чем один? Uploadify использует jQuery ajax для обработки файлов? Он может выглядеть одновременно, но он обрабатывает один файл за один раз через ajax. Он будет вызывать ваш upload.php столько раз, сколько есть файлов в очереди. Поэтому, если ваша функция работает для одного файла, это будет для остальных. Вам просто нужно убедиться, что он пишет уникальное имя файла в каталоге при каждом вызове функции, как это выглядит. Uploadify обрабатывает петли через каждое имя файла, а затем вызывает ваш сценарий загрузки.

http://www.uploadify.com/demos/

Посмотрите на сетевой консоли с Chrome или Firebug и загрузить кучу картинок с на демо. вы увидите, что сценарий upload.php вызывается для каждого файла.

FYI, Я использовал для загрузки, но я перешел на PLUPLOAD http://www.plupload.com/. Поддерживает несколько загрузок, но лучше документировано и проще в использовании с отличными api.