Laravel改为存储临时文件

时间:2019-04-15 05:58:38

标签: php laravel

我下面有代码,而不是保存文件,而是将临时文件保存在位置

代码

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

two

what saved in my app location

one

我需要什么

是保存真实文件translator_translations - 2019-04-15 05:52:50.csv而不是tmp文件。

有什么想法吗?

2 个答案:

答案 0 :(得分:1)

您需要将文件名传递给move()函数,而不要传递任何其他文件名,否则它将采用临时名称。

$file->move($destinationPath,$filename);
  

注释:

您应该使用正确的文件名。文件名不应包含任何特殊字符,例如空格,逗号和冒号(:)。

答案 1 :(得分:0)

您使用了错误的方法使用移动功能将两个参数的旧目录提供给新目录删除此行$file->move($location);并使用$file->storeAs( $location, $new_filename );