前段:
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;
}