PHP图片传输

前段:

ajax发送图片


//<input type="file" name="Img" >
//动态上传图片
$("input[type='file']").change(function () {
    let file_name = $(this).attr("name");
    let data = new FormData();
    let url = "";
    data.append(this_value, $(this).prop('files')[0]);
    $.ajax({
        type: 'POST',
        url: "upload",
        data: data,
        cache: false,
        processData: false,
        contentType: false,
        success: function (res) {
           console.log(res);
        }
    });
})
后端:
php接收图片、发送图片
<?php

/**接收前段文件
*/
function upload()
{
    $dir = $_FILES["Img"]["tmp_name"] ?? "";
    $suffixArr = $_FILES["Img"]["type"] ?? "";
    $suffix = explode('/', $suffixArr)[1] ?? "";
    $file_name = uniqid() . "." . $suffix;
    move_uploaded_file($dir, $file_name);
    if (file_exists($file_name)) {
        $file = $_FILES["Img"];
        $file["value"] = 'photo';
        $file["upload_file"] = file_get_contents($file_name);
        $file["delimiter_uniqid"] = uniqid();
        $res = http_request_form_data($file);
        unlink($file_name);
        dump($res);
        $res['code'] == 200 ? '成功' : '失败';
    }
    $this->error("上传失败!");
    exit();
}


/**GQA:2022-06-29
 * 文件传输=》发送form-data:
 */
function http_request_form_data($param)
{
    $url = 'http://www.aaa.cn:8101/user-file/webUploadPhoto';
    $post_data = build_form_data($param);
    $curl = curl_init($url);
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($curl, CURLOPT_POST, true);
    curl_setopt($curl, CURLOPT_POSTFIELDS, $post_data);
    curl_setopt($curl, CURLOPT_HTTPHEADER, [
        "Content-Type: multipart/form-data; boundary=" . $param['delimiter_uniqid'],
        "Content-Length: " . strlen($post_data)
    ]);
    $data = curl_exec($curl);
    if (curl_errno($curl)) {
        return curl_error($curl);
    }
    curl_close($curl);
    return json_decode($data, true);
}


/**GQA:2022-06-29
 * 文件传输=》组装form-data:
 * @param $param [“file”] =  file_get_contents("file.png"); 文件
 * @param $param [“name”] = "file.png"; 图片名
 * @param $param [“value”] = “photo” 请求参数
 * @param $param [“file”] = “delimiter_uniqid”
 * @return Object
 */
function build_form_data($param)
{
    $data = '';
    $eol = "\r\n";
    $upload = $param['upload_file'];
    unset($param['upload_file']);

    foreach ($param as $name => $content) {
        $data .= "--" . $param['delimiter_uniqid'] . "\r\n"
            . 'Content-Disposition: form-data; name="' . $name . "\"\r\n\r\n"
            . $content . "\r\n";
    }
    // 拼接文件流
    $data .= "--" . $param['delimiter_uniqid'] . $eol
        . 'Content-Disposition: form-data; name="' . $param['value'] . '"; filename="' . $param['name'] . '"' . "\r\n"
        . 'Content-Type:application/octet-stream' . "\r\n\r\n";

    $data .= $upload . "\r\n";
    $data .= "--" . $param['delimiter_uniqid'] . "--\r\n";
    return $data;
}
Licensed under 京ICP备17003353号-3