使用php从Flatter上传多个图像并更改文件名

mwg9r5ms  于 2021-09-29  发布在  Java
关注(0)|答案(2)|浏览(262)

我正在尝试上传多张图片,并从flutter发送的图片中更改它们的名称。文件上传没有问题,所以Flutter端不是问题,所以我不会从Flutter端附加和编码,主要问题是无法更改每个文件的名称。代码如下:

<?php
require 'dbh.php';

$image[] = $_FILES['image']['name'];
$tmpFile[] = $_FILES['image']['tmp_name'];

foreach($image as $keyImage => $value) {
    foreach($tmpFile as $key => $tmpFilevalue) {
        $fileExt = explode('.', $value);
        $fileActualExt = strtolower(end($fileExt));
        $new_extension = 'jpg';
        $fileNameNew = "post".$key.".".$new_extension;

        if(move_uploaded_file($tmpFilevalue, 'postImages/'. $fileNameNew)) {
           echo "ok";
        }
    }
}
?>

使用上面的代码,我只能更改一个图像文件的名称,似乎循环没有增加并保持不变 0 . 但如果我这样做,替换 $fileNameNew$value 已上载所有文件,但名称不变。这是密码

<?php
    require 'dbh.php';

    $image[] = $_FILES['image']['name'];
    $tmpFile[] = $_FILES['image']['tmp_name'];

    foreach($image as $keyImage => $value) {
        foreach($tmpFile as $key => $tmpFilevalue) {
            $fileExt = explode('.', $value);
            $fileActualExt = strtolower(end($fileExt));
            $new_extension = 'jpg';
            $fileNameNew = "post".$key.".".$new_extension;

            if(move_uploaded_file($tmpFilevalue, 'postImages/'. $value)) {
               echo "ok";
            }
        }
    }
    ?>
nafvub8i

nafvub8i1#

$image和$tmpfile已经是一个数组。
与此相反:

$image[] = $_FILES['image']['name'];
$tmpFile[] = $_FILES['image']['tmp_name'];

试试这个:

$image = $_FILES['image']['name'];
$tmpFile = $_FILES['image']['tmp_name'];
xghobddn

xghobddn2#

您需要像下面这样编写循环:

if(!empty($_FILES["files"]["tmp_name"])){ // check if valid array
  foreach($_FILES["files"]["tmp_name"] as $key=>$tmpName) {
    $fileName=$_FILES["files"]["name"][$key];
    $fileTmp=$_FILES["files"]["tmp_name"][$key];
    ....
    ....
  }
}

相关问题