首页 > 解决方案 > file_put_contents 通过 PHP 中的 API 上传多张图片

问题描述

我正在尝试通过 PHP API 上传多个图像。

上传时,数据发送返回成功,但只是将图片的名称上传到数据库,文件并没有保存在服务器端。

我尝试指定单独的解码路径,然后使用该file_put_contents功能,但没有正确上传到服务器。

if($_SERVER['REQUEST_METHOD']=='POST'){
    $pic = $_POST['pic'];
    $random = random_word(20);
    $path = "grocery/item_img/".$random.".jpg"; 
    $actualpath = "$random.jpg";
    $actualpath1 = "$random1.jpg";
    $actualpath2 = "$random2.jpg";
    $sql = "INSERT INTO item (`pic`, `pic1`, `pic2`) 
            VALUES (NULL, '$actualpath', '$actualpath1', '$actualpath2')";
    class emp{}
        if(mysqli_query($koneksi,$sql)){
foreach ($_POST['pic'] as $name) {
    file_put_contents($path, $name);
    }
        echo json_encode(array( 'success' => 1,'message'=>'Item Added Successfully')); 
    }
    else{
        echo json_encode(array( 'success' => 0,'message'=>'Failed to Add Item Image'));
    }
}
function random_word($id = 20){
    $pool = '1234567890abcdefghijkmnpqrstuvwxyz';
    $word = '';
    for ($i = 0; $i < $id; $i++){
        $word .= substr($pool, mt_rand(0, strlen($pool) -1), 1);
    }
    return $word; 

标签: phpapifile-upload

解决方案


解决了

foreach 提供了无效的参数

当将其编辑为

  foreach ((array) $pic as $image)  {
...
}

错误消失但仍然没有上传

然后尝试

move_uploaded_file($_FILES["pic"]["tmp_name"], $path1); 

给出错误:未定义的索引:图片然后编辑为:

 if (isset($_FILES['foto'])) {
  move_uploaded_file($_FILES["foto"]["tmp_name"], $path1); }

错误消失但不会上传

试图将 file_put_contents 编辑为 pic1 的参数,它上传了第二张图片 ,,,

所以下面是上传三个图像同时将它们的路径存储到数据库的工作代码

无论如何要在工作时使它整洁

if($_SERVER['REQUEST_METHOD']=='POST'){
  
    $pic = $_POST['pic'];
    $pic1 = $_POST['pic1'];
    $pic2 = $_POST['pic2'];
    $random = random_word(20);
    $random1 = random_word(20);
    $random2 = random_word(20);
    $path = "../item_img/".$random.".jpg";
    $actualpath = "$random.jpg";
    $actualpath1 = "$random1.jpg";
    $actualpath2 = "$random2.jpg";



    //upload files

    $path1 = '../item_img/'.$actualpath;
    $path2 = '../item_img/'.$actualpath1;
    $path3 = '../item_img/'.$actualpath2;

    $sql = "INSERT INTO item (`pic`, `pic1`, `pic2`) 
            VALUES (NULL, '$actualpath', '$actualpath1', '$actualpath2')";
    class emp{}
        if(mysqli_query($koneksi,$sql)){
         file_put_contents($path1,base64_decode($pic));
         file_put_contents($path2,base64_decode($pic1));
         file_put_contents($path3,base64_decode($pic2));
    }
        echo json_encode(array( 'success' => 1,'message'=>'Item Added Successfully')); 
    }
    else{
        echo json_encode(array( 'success' => 0,'message'=>'Failed to Add Item Image'));
    }
}
function random_word($id = 20){
    $pool = '1234567890abcdefghijkmnpqrstuvwxyz';
    $word = '';
    for ($i = 0; $i < $id; $i++){
        $word .= substr($pool, mt_rand(0, strlen($pool) -1), 1);
    }
    return $word;


推荐阅读