//$options['saveFile'] = true; 测试能否正常保存临时文件

$formData = fopen("php://input", "r");

$retData = [];

$boundary = rtrim(fgets($formData), "\r\n"); //第一行是boundary

$info = []; //info段的信息

$data = ''; //拼接的数据

$infoPart = true; //是否是info段

while ($line = fgets($formData, self::$partSize)) {

if ($boundary . "\r\n" == $line || $boundary . "--\r\n" == $line) {

//如果是分割

$infoPart = true;

if ($info['type'] == 'json') {

$data = json_decode($data, true);

$retData[$info['name']] = $data;

} else if($info['type'] == 'file') {

if(isset($info['tmp_file'])) {

fclose($info['file_handle']);

$retData[$info['name']] = [

'org_name' => $info['org_name'],

'tmp_file' => $info['tmp_file']

} else {

$retData[$info['name']] = $data;

$data = '';

} else if ("\r\n" == $line) {

if ($infoPart) {

//解析info

$info = self::parserInfo($data, $options);

if (isset($info['tmp_file'])) {

$info['file_handle'] = fopen($info['tmp_file'], 'w');

$data = '';

$infoPart = false;

} else {

if($infoPart == false && isset($info['tmp_file'])) {

fwrite($info['file_handle'], $line);

} else {

$data .= $line;

fclose($formData);

print_r($retData);

private static function parserInfo($data, $options)

//获取参数名称, type

$infoPattern = '/name="(.+?)"(; )?(filename="(.+?)")?/'; //todo: 待优化

preg_match($infoPattern, $data, $matches);

$info['name'] = $matches[1];

$info['type'] = 'json';

//如果是文件

if (count($matches) > 4) {

$info['type'] = 'file';

$info['org_name'] = $matches[4];

//如果设置保存文件, 保存到临时文件

if (isset($options['saveFile']) && $options['saveFile']) {

$tmpFile = tempnam(sys_get_temp_dir(), 'FD');

$info['tmp_file'] = $tmpFile;

return $info;

put patch 用这个方法可以接受文件  和数据 ,解决表单乱码。

class FormDataParser{private static $partSize = 4096; //每次最大获取字节/*** 负责解析FormData*/public static function parser($options = []){//$options['saveFile'] = true; 测试能否正常保存临时文件$formData = fopen("php://i...
PHP 中,可以使用函数 `base64_decode()` 来将 base64 编码的图片转化为二进制字符串。然后使用 文件 相关的函数,如 `file_put_contents()` 或者 `fopen()`,`fwrite()` 将二进制字符串写入 文件 即可。 示例代码: $base64_image = $_POST['image']; $image_data = base64_decode($base64_image); $filepath = 'path/to/save/image.jpg'; file_put_contents($filepath, $image_data); 注意: 文件 写入权限,以及是否设置好保存路径。