Laravel - 更改请求对象上文件的 MIME 类型
Laravel - change mime-type of a file on the request object
我正在上传一个扩展名为 dwf
的文件。
但是 $request->file('dwf_file')->extension()
给我 bin
而不是 dwf
并且文件上的 mime 类型被错误地设置为 application/octet-stream
可能是它的原因猜测是二进制文件
现在,我正在尝试在验证开始之前即时更改 MIME 类型:
$file = $request->file('dwf_file');
$request->merge([
'dwf_file' =>
new \Illuminate\Http\UploadedFile(
$file->getPath(),
$file->getClientOriginalName(),
'model/vnd.dwf' // correct mime-type
)
]);
$request->validate(...); // fails because uploaded file's extension is not dwf
它不起作用,我认为主要是因为合并只处理输入源而不处理文件。
那么,如何将 dwf_file
更改为 UploadedFile
的新实例?或者我可以更改现有 UploadedFile
实例的 mime 类型吗?我在 class.
上找不到任何 setMimeType
方法
我有哪些选择?
谢谢。
您可以使用 getClientOriginalExtension
。它将 return dwf extension
.
$request->file('dwf_file')->getClientOriginalExtension()
并且 $request->file('dwf_file')->extension()
将 return bin
。
您可以使用
获取mimeType
$request->file('dwf_file')->getMimeType() or getClientMimeType()
这将 return "application/octet-stream"
形式
<form method="POST" enctype="multipart/form-data">
作为旁注
getClientOriginalExtension()
Returns 原始文件 extension.It 是从 uploaded.Then 的原始文件名中提取的,不应将其视为安全值。
已更新
我认为 dwf
扩展不能正常用于 mimes validation.Because dwf 文件上传 return bin
因为 mimes.So 最好创建自定义验证
'dwf_file' => ['file','mimeTypes:application/octet-stream', function ($attribute, $value, $fail) {
if ($value->getClientOriginalExtension() != 'dwf') {
$fail('The '.$attribute.' is invalid.');
}
}],
我正在上传一个扩展名为 dwf
的文件。
但是 $request->file('dwf_file')->extension()
给我 bin
而不是 dwf
并且文件上的 mime 类型被错误地设置为 application/octet-stream
可能是它的原因猜测是二进制文件
现在,我正在尝试在验证开始之前即时更改 MIME 类型:
$file = $request->file('dwf_file');
$request->merge([
'dwf_file' =>
new \Illuminate\Http\UploadedFile(
$file->getPath(),
$file->getClientOriginalName(),
'model/vnd.dwf' // correct mime-type
)
]);
$request->validate(...); // fails because uploaded file's extension is not dwf
它不起作用,我认为主要是因为合并只处理输入源而不处理文件。
那么,如何将 dwf_file
更改为 UploadedFile
的新实例?或者我可以更改现有 UploadedFile
实例的 mime 类型吗?我在 class.
setMimeType
方法
我有哪些选择?
谢谢。
您可以使用 getClientOriginalExtension
。它将 return dwf extension
.
$request->file('dwf_file')->getClientOriginalExtension()
并且 $request->file('dwf_file')->extension()
将 return bin
。
您可以使用
获取mimeType$request->file('dwf_file')->getMimeType() or getClientMimeType()
这将 return "application/octet-stream"
形式
<form method="POST" enctype="multipart/form-data">
作为旁注
getClientOriginalExtension()
Returns 原始文件 extension.It 是从 uploaded.Then 的原始文件名中提取的,不应将其视为安全值。
已更新
我认为 dwf
扩展不能正常用于 mimes validation.Because dwf 文件上传 return bin
因为 mimes.So 最好创建自定义验证
'dwf_file' => ['file','mimeTypes:application/octet-stream', function ($attribute, $value, $fail) {
if ($value->getClientOriginalExtension() != 'dwf') {
$fail('The '.$attribute.' is invalid.');
}
}],