Swoole-src: fpm和Swoole的mimetype会不一致

Created on 31 Jan 2019  ·  8Comments  ·  Source: swoole/swoole-src

目前通过iOS分片上传图片文件文件,fpm和Swoole保存的文件mime类型不一致
以下为上传保存文件的主要逻辑(断点续传)

iOS提交的数据:"file":"[object] (Illuminate\\Http\\UploadedFile: /tmp/swoole.upfile.a7PsRR)"

fpm的上传的图片分片为image/png
Swoole上传的分片为application/octet-stream

$data = file_get_contents($file);
$fp = fopen($fileInfo['filePath'], 'a');
                    flock($fp, LOCK_EX);
                    fwrite($fp, $data);
                    flock($fp, LOCK_UN);
                    fclose($fp);

系统版本:centos7.2
Swoole版本:4.2.7
php版本:7.1

waiting on review

All 8 comments

iOS下会出现这个问题,感觉是服务器接收到的头信息不一致造成的。
麻烦排查验证下呢

https://github.com/swoole/swoole-src/issues/2025

iOS通过这种方式上传的

把Http原始的请求报文发给我们

图片报文.txt

应该是content-type引起的

这里客户端指定的Content-Type是什么就是什么

服务器如果是fpm的, $m = finfo_file(finfo_open(FILEINFO_MIME_TYPE), $file); 会是image/png。
Swoole下会是application/octet-stream

意思是正常的吗

fpm这个应该是读文件内容头的, PHP有相关函数可以做这个判断

Swoole:获取临时文件信息

$file = [object] (Illuminate\\Http\\UploadedFile: /tmp/swoole.upfile.a7PsRR)
$m = finfo_file(finfo_open(FILEINFO_MIME_TYPE), $file);
输出 application/octet-stream

fpm:获取临时文件信息

$file = [object] (Illuminate\\Http\\UploadedFile: /tmp/a7PsRR)
$m = finfo_file(finfo_open(FILEINFO_MIME_TYPE), $file);
输出 image/png

这不应该啊,代码里面并没有去读取header信息,而是直接读取上传的临时文件

Was this page helpful?
0 / 5 - 0 ratings