laravel - 在 Laravel 中移动文件之前的 getMimeType()
问题描述
这是我的应用程序的一部分,我用来放置管理员可以从中选择文件类别的部分...
File Model
namespace App\Models;
use App\Traits\Categorizeable;
use Illuminate\Database\Eloquent\Model;
class File extends Model
{
use Categorizeable;
protected $primaryKey = 'file_id';
protected $guarded = ['file_id'];
public function packages()
{
return $this->belongsToMany(Package::class, 'package_file');
}
}
无论如何,我为它使用了一个特征......之后这是我的观点:
<div class="form-group">
<label for="categorize"> categories :</label>
<select name="categorize[]" id="categorize" class="select2 form-control" multiple>
@foreach($categories as $cat)
<option value="{{$cat->category_id}}"
{{isset($file_categories) && in_array($cat->category_id,$file_categories) ? 'selected' :'' }}>
{{$cat->category_name}}</option>
@endforeach
</select>
</div>
最后这是我的FilesController
:
public function store(Request $request)
{
// $this->validate();....
//after validation
$new_file_name = str_random(45) . '.' . $request->file('fileItem')->getClientOriginalExtension();
$result = $request->file('fileItem')->move(public_path('files'), $new_file_name);
if ($result instanceof \Symfony\Component\HttpFoundation\File\File) {
$new_file_data['file_name'] = $new_file_name;
$new_file_data = File::create([
'file_title' => $request->input('file_title'),
'file_description' => $request->input('file_description'),
'file_type' => $request->file('fileItem')->getMimeType(),
'file_size' => $request->file('fileItem')->getClientSize(),
]);
if ($new_file_data) {
if ($request->has('categorize')) {
$new_file_data->categories()->sync($request->input('categorize'));
}
return redirect()->route('admin.files.list')->with('success', 'message');
}
}
}
现在我的问题是,如您所见,首先file()
保存一个.tmp
文件,我需要getMimeType()
在移动它之前使用它,如何修改我的代码?
最好的方法是什么?
应用程序给我一个错误
解决方案
create
在移动文件并在函数中使用之前将 mime 类型保存为变量
$new_file_name = str_random(45) . '.' . $request->file('fileItem')->getClientOriginalExtension();
$mime_type = $request->file('fileItem')->getMimeType();
$file_size = $request->file('fileItem')->getClientSize();
$result = $request->file('fileItem')->move(public_path('files'), $new_file_name);
if ($result instanceof \Symfony\Component\HttpFoundation\File\File) {
$new_file_data['file_name'] = $new_file_name;
$new_file_data = File::create([
'file_title' => $request->input('file_title'),
'file_description' => $request->input('file_description'),
'file_type' => $mime_type,
'file_size' => $file_size,
]);
推荐阅读
- sql-server - 确保在存储过程中始终删除临时表
- laravel - Laravel - 按型号订购
- java - Spark:取消持久化后未释放内存
- ios - 内存错误,nil 传递给需要非空第一个参数的被调用者
- logging - Logstash:命名的 grok 模式(dns 查询日志)
- php - 为什么phpMailer中的$mail->send()会连续调用两次?
- python - Pyautogui 脚本仅适用于 ide
- javascript - 需要帮助来组织我的 Vuejs 项目架构
- sql-server - 获取现有数据库及其对象的 SQL 脚本
- masm - MASM 调用 printf