我下面有代码,而不是保存文件,而是将临时文件保存在位置
public function upload(Request $request)
{
//validate the file
if (!$request->hasFile('file_to_import')) {
return new JsonResponse([
'status' => 'fail',
'message' => trans('json.needSelectFile'),
]);
}
$file = $request->file('file_to_import');
if (strtolower($file->getClientOriginalExtension()) != 'csv') {
return new JsonResponse([
'status' => 'fail',
'message' => trans('json.needValidCSV'),
]);
}
$disk = Storage::disk('local');
if (!$disk->exists('feeds/translations')) {
$disk->makeDirectory('feeds/translations');
}
$uploaded_date = now();
$name_without_extension = str_replace('.' . $file->getClientOriginalExtension(), '', $file->getClientOriginalName());
$new_filename = $name_without_extension . ' - ' . $uploaded_date . '.' . $file->getClientOriginalExtension();
$location = storage_path('app/feeds/translations/', $new_filename);
$file->move($location);
return new JsonResponse([
'status' => 'success',
'filename' => $new_filename,
]);
}
file i uploaded
what saved in my app location
是保存真实文件translator_translations - 2019-04-15 05:52:50.csv
而不是tmp文件。
有什么想法吗?
答案 0 :(得分:1)
您需要将文件名传递给move()
函数,而不要传递任何其他文件名,否则它将采用临时名称。
$file->move($destinationPath,$filename);
注释:
您应该使用正确的文件名。文件名不应包含任何特殊字符,例如空格,逗号和冒号(:)。
答案 1 :(得分:0)
您使用了错误的方法使用移动功能将两个参数的旧目录提供给新目录删除此行$file->move($location);
并使用$file->storeAs(
$location, $new_filename
);