【问题标题】:Upload photo to server directory Ionic - Cordova plugin上传照片到服务器目录 Ionic - Cordova 插件
【发布时间】:2020-10-05 13:54:51
【问题描述】:

我想将拍摄的照片上传到数据库。插入成功,所有细节都上传到数据库,还有图片的名称。但不知何故,在我的图像文件夹中,图像无法打开。它说“看起来我们不支持这种文件格式”。怎么了?

这是我的 php 代码

<?php
    header("Access-Control-Allow-Origin: *");

    $conn = new mysqli("localhost", "root","","matawarga");
    if($conn->connect_error) {
        echo "Unable to connect, please try again";
        //die();
    }

    $postdata = file_get_contents("php://input");
    if(isset($postdata))
    {
        //$namesearch = $_POST['filter'];
        $request = json_decode($postdata);
        $userlogged = $request->usernamelogged;
        $judul = $request->judul;
        $tgl = $request->tglKejadian;
        $desc = $request->deskripsi;
        $instansi = $request->tujuan;
        $longitude = 0;
        $latitude = 0;

        $dateformat = strtotime($tgl);
        $newdateformat = date('Y-m-d', $dateformat);
        $myArr = array();
        $sql = "INSERT INTO kejadian(username,judul,deskripsi,instansi_tujuan,tanggal,longitude,latitude) VALUES (?,?,?,?,?,?,?)";
        $stmt = $conn->prepare($sql);
        $stmt->bind_param("sssssii",$userlogged, $judul, $desc, $instansi, $newdateformat,$longitude,$latitude);

        if($stmt->execute())
        {
            $idk = $stmt->insert_id;
            $image = str_replace('data:image/jpeg;base64,','', $url);
            $image = str_replace(' ', '+', $image);
            $data = base64_decode($image);
            file_put_contents('images/'.$idk.'.jpg', $data);
            $url = ".jpg";

            $sql3 = "INSERT INTO gambar_kejadian(idkejadian,extension) VALUES (?,?)";
            $stmt = $conn->prepare($sql3);
            $stmt->bind_param("is", $idk, $url);
            $stmt->execute();

$myArr['pesan'] = "Berhasil ditambahkan.";
        }
        else
        {
            $myArr['pesan'] = "Gagal" .$judul;
        }
    }
    else
    {
        $myArr['pesan'] = "Gagal" .$desc;
    }

    echo json_encode($myArr);
    $conn->close();
?>

【问题讨论】:

  • $image = str_replace(' ', '+', $image);这部分引起了我的一些关注,除了删除data:image/jpeg;base64之外,您不必修改它
  • 什么是$url?它在您提供的代码中不存在,$desc 将永远不会存在于底部的 } else { 中
  • 不要这样循环变量,$url = '.jpg' 应该是$extension 否则你自己也会感到困惑
  • 也 $data = explode( ',', $base64_string )[1] 可能是处理 base64 编码图像的最佳方式,它会返回重要的部分(做你自己的健全性检查)
  • 也许你上传了别的东西然后jpeg,解析data:image/jpeg

标签: php ionic-framework cordova-plugins


【解决方案1】:

试试这个bas64转换jpg

    $image = explode(";base64,", $url);
    $data = base64_decode($image[1]);
    file_put_contents('images/' . $idk . '.jpg', $data);
    $url = 'images/' . $idk . '.jpg';

【讨论】:

  • 我的代码是正确的,但事实证明我需要先获取编码,谢谢
猜你喜欢
  • 2023-03-17
  • 2012-10-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-01-21
相关资源
最近更新 更多