0

我想使用以下代码将多个图像上传到我的服务器:

<html>
<body>

<form action="upload_file.php" method="post" enctype="multipart/form-data">
<input id="picture_01" name="userfile['01']" tabindex="auto" type="file">
<input id="picture_02" name="userfile['02']" tabindex="auto" type="file">
  <input id="picture_03" name="userfile['03']" tabindex="auto" type="file">
<input id="picture_04" name="userfile['04']" tabindex="auto" type="file">
<input id="picture_05" name="userfile['05']" tabindex="auto" type="file">
<input id="picture_06" name="userfile['06']" tabindex="auto" type="file">  
<input type="submit" name="submit" value="Submit">
</form>

</body>
</html>

和upload_file.php

 <?php

$foldername = "anotherfolder";

$userfile = array(
            '01' => 'hello',
            '02' => 'bye',
            '03' => 'likka',
            '04' => 'pippa',
            '05' => 'laptop',
            '06' => 'cow06',
            '07' => 'cow07',
            '08' => 'cow08',
            '09' => 'cow09',
            '10' => 'cow10',            
            );

            echo $userfile ['01'];

foreach ($userfile as $keys => $values); 

//Upload Images
$success = 0;
$fail = 0;
$uploads_dir = "temp_images";
$count = 1;
foreach ($_FILES["userfile"]["error"] as $key => $error) {
    if ($error == UPLOAD_ERR_OK) {
        $tmp_name = $_FILES["userfile"]["tmp_name"][$key];
        $name = $_FILES["userfile"]["name"][$key];
        $uploadfile = "$uploads_dir/$name";
        $ext = strtolower(substr($uploadfile,strlen($uploadfile)-3,3));
        if (preg_match("/(jpg|gif|png|bmp|jpeg)/",$ext)){
            $newfile = "$uploads_dir/"."$values".".".$ext;
            if(move_uploaded_file($tmp_name, $newfile)){
                           }else{
                echo "Couldn't move file: Error Uploading the file. Retry after sometime.\n";
            }
        }else{
            echo "Invalid Extension.\n";
            $fail++;
        }
    }
}

?>

我希望当有人在第一个输入中上传第一张图片时,它被重命名为“你好”,如果它在第二个输入中上传,它被重命名为“再见”。如果上传了两张图片,第一张图片命名为“hello”,第二张图片重命名为“bye”。

我试图寻找解决方案,但没有成功。我不明白出了什么问题。无论图片是从哪个输入上传的,这些文件都按数组中的最新值顺序命名为“cow10”。

有什么帮助或建议吗?

4

2 回答 2

0

我的代码正在运行,您必须根据您的要求进行更改。我上传了 2 个 .jpg 文件进行测试,并保存为 1.jpg 和 2 张图片 .jpg。我没有完成我的代码,因为我的任务不是完成而是帮助你。下面是文件testing.php的代码(它已上传到此表单所在的同一文件。我更新了代码。它在我的电脑上工作。你应该尝试自己解决这些问题。

<?php

$array = array("'01'"=>"1.jpg","'02'"=>"2.jpg");
$i=0;
if(!empty($_FILES["userfile"]["error"])){
    foreach ($_FILES["userfile"]["error"] as $key => $error) {
        if ($error == UPLOAD_ERR_OK) {
            $tmp_name = $_FILES["userfile"]["tmp_name"][$key];
            $name = $array[$key];echo $key;
            move_uploaded_file($tmp_name, $name);
            $i++;
        }
    }
}
?>
<html>
<body>

<form action="testing.php" method="post" enctype="multipart/form-data">
<input id="picture_01" name="userfile['01']" tabindex="auto" type="file">
<input id="picture_02" name="userfile['02']" tabindex="auto" type="file">
  <input id="picture_03" name="userfile['03']" tabindex="auto" type="file">
<input id="picture_04" name="userfile['04']" tabindex="auto" type="file">
<input id="picture_05" name="userfile['05']" tabindex="auto" type="file">
<input id="picture_06" name="userfile['06']" tabindex="auto" type="file">  
<input type="submit" name="submit" value="Submit">
</form>

</body>
</html>
于 2013-10-04T23:29:54.227 回答
0

有几件事对我来说很突出。1. 你有一个 $userfile 的 foreach 循环,它实际上不是一个循环。然后,您应该查看错误并引用该 $values

以下内容对我有用,但上传文件夹中的文件权限存在一些问题。问题是您没有正确引用 $userfile 数组,并且 $_FILES 对象索引实际上是:'01' 与 $userfile 数组上的 01。

<?php

$foldername = "/var/www/vhosts/application/tmp"; // <-- Unused

$userfile = array(
            '01' => 'hello',
            '02' => 'bye',
            '03' => 'likka',
            '04' => 'pippa',
            '05' => 'laptop',
            '06' => 'cow06',
            '07' => 'cow07',
            '08' => 'cow08',
            '09' => 'cow09',
            '10' => 'cow10',
            );


//Upload Images
$success = 0;
$fail = 0;
$uploads_dir = "temp_images";
$count = 1;
foreach ($_FILES["userfile"]["error"] as $key => $error) {

        $file_key =  str_replace("'",'',$key);
    if ($error == UPLOAD_ERR_OK) {
        $tmp_name = $_FILES["userfile"]["tmp_name"][$key];
        $name = $_FILES["userfile"]["name"][$key];

        $uploadfile = "$uploads_dir/$name";
        $ext = strtolower(substr($uploadfile,strlen($uploadfile)-3,3));
        if (preg_match("/(jpg|gif|png|bmp|jpeg)/",$ext)){
            $newfile = $uploads_dir."/".$userfile[$file_key].".".$ext;
            echo "Copying ".$tmp_name." to ".$newfile;
            if(move_uploaded_file($tmp_name, $newfile)){
                           }else{
                echo "Couldn't move file: Error Uploading the file. Retry after sometime.\n";
            }
        }else{
            echo "Invalid Extension.\n";
            $fail++;
        }
    }
}
?>

这是我提交 3 张图片时的输出。

将 /tmp/phpBttoCX 复制到 temp_images/hello.jpg

将 /tmp/phpFCHlLK 复制到 temp_images/bye.jpg

将 /tmp/phpi5u51x 复制到 temp_images/likka.jpg

于 2013-10-04T21:58:37.320 回答