如何在PHP中从表单字段(multipart / form)发布数据和文件以休息api

时间:2018-01-22 18:10:17

标签: php forms rest curl

我有一个表单我想将所有字段发布到其余的api。我想提交文件和内容。如何在我的API上检索它?我用原始PHP编写了api。在我的api我已检查标题optcode所以我也需要传递http标头属性。 我尝试过这种方式使用CUrl我只能传递数据而不是文件。有没有简单的方法来传递文件和内容。 这是我的表单数据

<div class="layout-content">
        <div class="container">
            <div class="row">
                <div class="col-md-12">
                    <h2>Local Vegitable Upload</h2>
                </div>
            </div>
            <div class="row">
                <div class="col-md-12">
                    <form action="" enctype="multipart/form-data">
                        <div class="row">
                            <div class="col-md-6">
                                <div class="form-group">
                                    <label for="plantName">Plant Name:</label>
                                    <input type="text" name="plant_name" class="form-control" id="email"/>
                                </div>
                            </div>
                            <div class="col-md-6">
                                <div class="form-group">
                                    <label for="plantName">Scientific Name:</label>
                                    <input type="text" name="scientific_name" class="form-control" id="email"/>
                                </div>
                            </div>
                        </div>
                        <div class="row">
                            <div class="col-md-6">
                                <div class="form-group">
                                    <label for="plantName">English Name:</label>
                                    <input type="text" name="eng_name" class="form-control" id="eng_name"/>
                                </div>
                            </div>
                            <div class="col-md-6">
                                <div class="form-group">
                                    <label for="plantName">Local Name:</label>
                                    <input type="text" name="local_name" class="form-control" id="local_name"/>
                                </div>
                            </div>
                        </div>
                        <div class="row">
                            <div class="col-md-6">
                                <div class="form-group">
                                    <label for="plantName">Family:</label>
                                    <input type="text" name="family" class="form-control" id="family"/>
                                </div>
                            </div>
                            <div class="col-md-6">
                                <div class="form-group">
                                    <label for="plantName">Botany:</label>
                                    <input type="text" name="botany" class="form-control" id="botany"/>
                                </div>
                            </div>
                        </div>
                        <div class="row">
                            <div class="col-md-6">
                                <div class="form-group">
                                    <label for="plantName">Usage:</label>
                                    <input type="text" name="useg" class="form-control" id="useg"/>
                                </div>
                            </div>
                            <div class="col-md-6">
                                <div class="form-group">
                                    <label for="plantName">Caution :</label>
                                    <input type="text" name="caution" class="form-control" id="caution"/>
                                </div>
                            </div>
                        </div>
                        <div class="row">
                            <div class="col-md-6">
                                <div class="form-group">
                                    <label for="plantName">Place:</label>
                                    <input type="text" name="place" class="form-control" id="place"/>
                                </div>
                            </div>
                            <div class="col-md-6">
                                <div class="form-group">
                                    <label for="plantName">Referent :</label>
                                    <input type="text" name="referent" class="form-control" id="referent"/>
                                </div>
                            </div>
                        </div>
                        <div class="row">
                            <div class="col-md-6">
                                <div class="form-group">
                                    <label for="plantName">Image 1 :</label>
                                    <input type="file" name="image[]" class="form-control" id="referent"/>
                                </div>
                            </div>
                            <div class="col-md-6">
                                <div class="form-group">
                                    <label for="plantName">Image 2 :</label>
                                    <input type="file" name="image[]" class="form-control" id="referent"/>
                                </div>
                            </div>
                        </div>


                        <div class="form-group">
                            <label for="discription">Description:</label>
                            <textarea type="description" class="form-control" id="description"></textarea>
                        </div>
<!--                        <div class="checkbox">-->
<!--                            <label><input type="checkbox"> Remember me</label>-->
<!--                        </div>-->
                        <button type="submit" class="btn btn-default">Submit</button>
                    </form>
                </div>
            </div>

        </div>
    </div>

之前我曾尝试过这种方式

<?php

if (isset($_POST['plant_name']) && isset($_POST['description'])) {

    $plant_name = $_POST['plant_name'];
    $scientific_name = $_POST['scientific_name'];
    $eng_name =  $_POST['eng_name'];
    $local_name = $_POST['local_name'];
    $family = $_POST['family'];
    $botany = $_POST['botany'];
    $useg = $_POST['useg'];
    $caution = $_POST['caution'];
    $place = $_POST['place'];
    $referent = $_POST['referent'];
    $description = $_POST['description'];

    $data = "{\"plant_name\":\"$plant_name\",\"scientific_name\":\"$scientific_name\" ,\"eng_name\":\"$eng_name\",\"local_name\":\"$local_name\",\"family\":\"$family\",\"botany\":\"$botany\" ,\"useg\":\"$useg\",\"caution\":\"$caution\",\"place\":\"$place\" ,\"referent\":\"$referent\" ,\"description\":\"$description\"}";


    $apiResult = callLocVegApi("locveg" , $data);
     function callLocVegApi($optcode,$data){
$curl = curl_init();

curl_setopt_array($curl, array(
    CURLOPT_PORT => APIPORT,
    CURLOPT_URL => APIURL,
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_ENCODING => "",
    CURLOPT_MAXREDIRS => 10,
    CURLOPT_TIMEOUT => 30,
    CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
    CURLOPT_CUSTOMREQUEST => "POST",
    CURLOPT_POSTFIELDS => $data,
    CURLOPT_HTTPHEADER => array(
        "cache-control: no-cache",
        "content-type: multipart/form-data",
        "optcode: $optcode"
    ),
));

$response = curl_exec($curl);
$err = curl_error($curl);

curl_close($curl);

if ($err) {
    return "cURL Error #:" . $err;
} else {
    return $response;
}

}

    $result =json_decode($apiResult, true);

    if($result["result"]==1){


        header('Location: dashboard.php');


    }else{

//        echo '<script>alert("Please Check Username or Password");</script>';
    }

}
?>
enter code here

0 个答案:

没有答案