PHP文件上传 - 多个文件

时间:2012-02-15 16:03:16

标签: php file-upload multiple-instances

使用以下PHP我试图上传多个图像。上传的图片数量可以变化。

我似乎遇到的问题是图像编号1没有上传,但文件路径正在打印到屏幕上。

代码: -

if ($_FILES['pac_img_1']['name']>""){
    echo("You have uploaded the following images:-<ul>");
    for ($i=1; $i<=$imagesCount; $i++){ 
        $target_path = "files/" . $companyName . "/images/";
        $target_path = $target_path . basename( $_FILES['pac_img_' . $i]['name']); 
        if(move_uploaded_file($_FILES['pac_img_' . $i]['tmp_name'], $target_path)) {
            echo "<li><a href='". $target_path . "'>".  basename( $_FILES['pac_img_' . $i]['name']). "</a></li>";
        } else{
            echo "There was an error uploading an image";
        }
};
    echo("</ul>");
}else{
    echo("None uploaded");
};

我已经从之前使用过的一些代码中对其进行了调整,所以我怀疑我在这里犯了“小学生”的错误。

帮助将不胜感激。

编辑以添加$ imagesCount通过$ _POST请求从表单元素中获取其值。仅上传一个图像时,值= 0。

3 个答案:

答案 0 :(得分:1)

根本不是一个php-dude,我会尝试改变

for ($i=1; $i<=$imagesCount; $i++){

for ($i=0; $i<=$imagesCount; $i++){

- 或许

for ($i=0; $i < $imagesCount; $i++){

取决于$ imagesCount的设置方式。

答案 1 :(得分:0)

您的for循环需要修改。数组索引从0开始。最后一个元素应该是Array length - 1;

您的for循环需要修改为以下代码示例。

if ($_FILES['pac_img_1']['name']>""){
    echo("You have uploaded the following images:-<ul>");
    for ($i=0; $i<$imagesCount; $i++){ 
        $target_path = "files/" . $companyName . "/images/";
        $target_path = $target_path . basename( $_FILES['pac_img_' . $i]['name']); 
        if(move_uploaded_file($_FILES['pac_img_' . $i]['tmp_name'], $target_path)) {
            echo "<li><a href='". $target_path . "'>".  basename( $_FILES['pac_img_' . $i]['name']). "</a></li>";
        } else{
            echo "There was an error uploading an image";
        }
};
    echo("</ul>");
}else{
    echo("None uploaded");
};

答案 2 :(得分:0)

  

您的for循环需要修改。数组索引从0开始。最后一个元素应该是Array length - 1;   您的for循环需要修改为以下代码示例。

实际上,它正在循环几个$ _POST itens。他的HTML可能有类似的东西:

<input type="file" name="pac_img_1">
<input type="file" name="pac_img_2">
<input type="file" name="pac_img_3">

他试图获取这些图像。

我会这样做。

HTML:

<input type="file" name="pac_img[]" />
<input type="file" name="pac_img[]" />
<input type="file" name="pac_img[]" />

(请注意,您可以动态添加文件输入而无需担心名称)

PHP:

if (count($_FILES['pac_img']) > 0){
    echo("You have uploaded the following images:-<ul>");

    foreach($_FILES['pac_img'] as $key => $file){
        $target_path = "files/" . $companyName . "/images/";
        $target_path = $target_path . basename( $file['name']); 
        if(move_uploaded_file($file['tmp_name'], $target_path)) {
            echo "<li><a href='". $target_path . "'>".  basename( $file['name'] ). "</a></li>";
        } else{
            echo "There was an error uploading an image";
        }
    }
    echo("</ul>");
}else{
    echo("None uploaded");
}

最后,但并非最不重要:始终检查上传的文件是否适合他们。 (http://www.acunetix.com/websitesecurity/upload-forms-threat.htm