file_put_contents загрузка нескольких изображений через API в PHP - PullRequest
0 голосов
/ 05 августа 2020

Я пытаюсь загрузить несколько изображений через 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; 

1 Ответ

0 голосов
/ 09 августа 2020

РЕШЕНО

foreach дает неверный аргумент

при редактировании его на

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

ошибка исчезла, но все же нет загрузок

затем попытался

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

дать ошибку: Неопределенный индекс: pic затем редактирует:

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

ошибка исчезла, но не загружается

попытался отредактировать file_put_contents параметром pic1, он загрузил второй pi c ,,,

, так что ниже приведен рабочий код, который загружает три изображения, сохраняя их пути к БД

все равно чтоб было аккуратно при работе

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;

...