使用laravel的文件上传功能,上传ai文件却被转存为pdf文件,不希望被转存为pdf。
业务背景
使用laravel文件上传功能,上传各种格式文件,目前pdf,pptx,png,jpg,xlsx等多种文件格式上传后,返回的文件格式和扩展名都是正确的。
问题
唯独后缀.ai文件(Adobe illustrator),使用了laravel的文件上传功能store()方法后,文件是成功上传了但却被转存为了pdf格式,这是我不想要的,希望以ai格式上传,服务端也能以ai格式存储。
复现问题
请留意我使用postman上传了一个名称为1.ai的文件,上传成功后,返回的list数组中的文件链接变成了pdf格式。
上传后ai文件被转存为pdf文件
服务端代码
代码103行,使用laravel的store()方法进行文件上传
个人猜测
请留意86行我打印了上传文件的扩展名,但它返回的并不是ai而是pdf,我顺着程序一步步点进底层代码的封装,发现底层代码中在获取文件mimeType时就已经获取的是pdf格式了,所以转存时就转存了pdf。
而一直困扰着我的是,我无法弄清楚为什么ai格式的文件,底层封装的代码获取到的mimeType会是’application/pdf’
底层代码分析
MimeTypes文件路径:项目/vendor/symfony/mime/MimeTypes.php
请注意代码的135行,我上传了ai文件后,获取的mimeType却是
application/pdf(请看下方debug处$mimeType变量),应该是application/postscript才对。
结论:个人猜测,上传ai文件被程序识别成了application/pdf文件,并转存为了pdf文件,这是我不想要的,所以求助大家,希望大家帮我看看,谢谢了。
推荐文章: