【问题标题】:Convert single photo upload to multiple photo upload (with iPhone support)将单张照片上传转换为多张照片上传(支持 iPhone)
【发布时间】:2013-02-21 04:13:12
【问题描述】:

我遵循了一个教程,该教程帮助我制作了一个非常基本的表单,以允许用户将图像上传到我的服务器(以及从他们的手机)。

我想允许多个文件上传,但我不确定如何转换我的 PHP 脚本。

如何将以下单张照片上传的工作代码转换为多张照片上传?

以下是我的代码的相关部分:

index.php:

<form action="upload.processor.php" enctype="multipart/form-data" id="upload" method="post" name="Upload">
   <input id="file" name="file" type="file" accept="image/*" capture="camera" />
   <input id="submit" name="submit" type="submit" value="Upload!">
</form>

上传.processor.php:

<?php 

    // make a note of the current working directory, relative to root. 
    $directory_self = str_replace(basename($_SERVER['PHP_SELF']), '', $_SERVER['PHP_SELF']); 

    // make a note of the directory that will receive the uploaded file 
    $uploadsDirectory = $_SERVER['DOCUMENT_ROOT'] . $directory_self . 'img/'; 

    // make a note of the location of the upload form in case we need it 
    $uploadForm = 'http://' . $_SERVER['HTTP_HOST'] . $directory_self . 'index.php'; 

    // make a note of the location of the success page 
    $uploadSuccess = 'http://' . $_SERVER['HTTP_HOST'] . $directory_self . 'upload.success.php'; 

    // fieldname used within the file <input> of the HTML form 
    $fieldname = 'file'; 

    // possible PHP upload errors 
    $errors = array(1 => 'php.ini: Max file size exceeded.', 
                    2 => 'HTML form: Max file size exceeded.', 
                    3 => 'File upload was only partial.', 
                    4 => 'No file was attached.'); 

    // check the upload form was actually submitted else print the form 
    isset($_POST['submit']) 
        or error('The upload form is required.', $uploadForm); 

    // check for PHP's built-in uploading errors 
    ($_FILES[$fieldname]['error'] == 0) 
        or error($errors[$_FILES[$fieldname]['error']], $uploadForm); 

    // check that the file we are working on really was the subject of an HTTP upload 
    @is_uploaded_file($_FILES[$fieldname]['tmp_name']) 
        or error('Not an HTTP upload.', $uploadForm); 

    // validation to make sure the uploaded file is in fact an image. 
    @getimagesize($_FILES[$fieldname]['tmp_name']) 
        or error('Only image uploads are allowed!', $uploadForm); 

    // make a unique filename for the uploaded file and check it is not already 
    // taken... if it is already taken keep trying until we find a vacant one 
    // sample filename: 1140732936-filename.jpg 
    $now = time(); 
    while(file_exists($uploadFilename = $uploadsDirectory.$now.'-'.$_FILES[$fieldname]['name'])) { 
        $now++; 
    } 

    // move the file to its final location and allocate the new filename to it 
    @move_uploaded_file($_FILES[$fieldname]['tmp_name'], $uploadFilename) 
        or error('Receiving directory has incorrect permissions.', $uploadForm); 

?> 

【问题讨论】:

    标签: php file-upload


    【解决方案1】:

    您将遍历 $_FILES[$fieldname] 以获取基于您的表单的文件数组。所以遍历数组然后处理文件。

    所以:

    foreach($_FILES[$fieldname] => $singleFile) {
       // check for PHP's built-in uploading errors 
        ($singleFile['error'] == 0) 
            or error($errors[$singleFile['error']], $uploadForm); 
    
        // check that the file we are working on really was the subject of an HTTP upload 
        @is_uploaded_file($singleFile['tmp_name']) 
            or error('Not an HTTP upload.', $uploadForm); 
    
        // validation to make sure the uploaded file is in fact an image. 
        @getimagesize($singleFile['tmp_name']) 
            or error('Only image uploads are allowed!', $uploadForm); 
    
        // make a unique filename for the uploaded file and check it is not already 
        // taken... if it is already taken keep trying until we find a vacant one 
        // sample filename: 1140732936-filename.jpg 
        $now = time(); 
        while(file_exists($uploadFilename = $uploadsDirectory.$now.'-'.$singleFile['name'])) { 
            $now++; 
        } 
    
        // move the file to its final location and allocate the new filename to it 
        @move_uploaded_file($singleFile['tmp_name'], $uploadFilename) 
            or error('Receiving directory has incorrect permissions.', $uploadForm);
    
    
    }
    

    【讨论】:

    • 应该按原样工作,还是我需要进行调整?我把它放进去,它似乎不起作用。
    • 我已经更新了代码。它旨在替换以下所有内容:isset($_POST['submit']) 或 error('需要上传表单。', $uploadForm);
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-21
    • 1970-01-01
    • 1970-01-01
    • 2018-03-20
    • 2013-06-01
    • 1970-01-01
    相关资源
    最近更新 更多