简体   繁体   中英

base64 String is too long to send via Fetch HTTP API

I have a base64 image that is a very long character count and when I try to send it via Fetch POST API it gets cut off and makes the image unacceptable by my PHP file server-side. The base64 is the b64data variable in my below code. Any solutions or ideas would be appreciated!

function submitPhoto(){ 


fetch('http://fanbeauties.com/app/submit-photo.php?pass=MY_PASS', { 
    method: "POST", 
    headers: {
      "Content-type": "application/x-www-form-urlencoded; charset=UTF-8"
    },
    body: 'name='+name+'&email='+email+'&market='+market+'&picture='+b64data
     });


};

The PHP:

<?php



      $title = $_POST['name'];
        $market = $_POST['market'];
        $account = "414890";
        $date = date("Y-m-d");
        $pass = $_GET['pass'];
        $image = $_POST['picture'];
        $title = $_POST['name'];
        //$source_type = "app";



        if($pass == "Fan412") { 

            //Clean base64 String
            //$image = str_replace(' ', '', $image);

            //Convert base64 into image
            $filename_path = md5(time().uniqid()).".jpg";
            $decoded=base64_decode($image);
            file_put_contents("../MY_FOLDER/".$filename_path,$decoded);

            // Insert Info into Database
            $mysqli->query("INSERT INTO MY_TABLE (account, date, title, market, image) VALUES ('$account', '$date', '$title', '$market', '$filename_path')");           

            // close connection 
            $mysqli->close();


        } else {

            die();

        } ?>

how about cut the base64_code into pieces then post them before submit the whole form...

postData { 'code': one piece_code, 'current_position': 1, 'full_pieces_count': a count you cut pieces
}

in php you can use redis to cache the base64_pieces with sorted_set piece1 piece2 ...( the score use the current_position you post) after final pieces upload success... combine them into pic to save then give js an img_url then submit the whole form

btw: set the max length to post all the string...if it's too long...cut it and post them async/sync

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM