为什么 Laravel 的 getMimeType() 方法将文件标识为“application/octet-stream”,而该文件的类型属性为 “audio/mpeg”?
我正在尝试将MP3文件上传到Laravel应用程序,并遇到了一个问题,即使该文件的属性设置为“audio / mpeg”,它也被上传为“应用程序/八位字节流”(.bin)文件。当我尝试死亡并将文件转储到服务器端代码上时:
dd($request->file('file'));
我得到:
UploadedFile {#187 ▼
-test: false
-originalName: "CUS12309821-20-AUG-2016-13-48-13.mp3"
-mimeType: "audio/mpeg"
-size: 47000471
-error: 0
path: "/private/var/folders/c7/6ws0lxy95dd_lhz1k067_zkc0000gn/T"
filename: "phpyZCsbU"
basename: "phpyZCsbU"
pathname: "/private/var/folders/c7/6ws0lxy95dd_lhz1k067_zkc0000gn/T/phpyZCsbU"
extension: ""
realPath: "/private/var/folders/c7/6ws0lxy95dd_lhz1k067_zkc0000gn/T/phpyZCsbU"
aTime: 2016-09-20 12:56:00
mTime: 2016-09-20 12:56:00
cTime: 2016-09-20 12:56:00
inode: 4565593
size: 47000471
perms: 0100600
owner: 501
group: 20
type: "file"
writable: true
readable: true
executable: false
file: true
dir: false
link: false
}
看看当我使用此方法时,它确实说mimeType的文件属性是正确的“audio / mpeg”格式。但是,当我在文件上传后调用getMimeType()方法时,我得到:
"application/octet-stream"
下面是路由方法中的代码:
/**
* Store a newly created resource in storage.
*
* @param \Illuminate\Http\Request $request
* @return \Illuminate\Http\Response
*/
public function store(Request $request)
{
$file = $request->all();
$filePath = Storage::putFile('file', $request->file('files'));
dd($request->file('file')->getMimeType());
$file['path'] = Storage::url($filePath);
$file['size'] = Storage::size($filePath);
$file['type'] = $request->file('file')->getMimeType();
return $file;
}
这个问题似乎是独一无二的,因为我使用的是Laravel框架,而其他有这个问题的人正在使用vanilla PHP。此外,其他人可能已将 Excel 文件报告为应用程序/八位字节流,而不是 Excel 文件。最后,我相信这可能是 guess() 方法的问题,它由 getMethodType() 调用。具有更多Laravel经验的人可能会证实这一点。