目标:当客户端请求从服务器查看文件时,我希望客户端的浏览器询问该怎么做(打开或下载文件)。我该如何构建它?
到目前为止,我有这样的方法:
public static function getFileContent($fullpath){
//yes, i can get both file and its extension
$file = File::get($fullpath);
$mimeType = File::extension($fullpath);
$response = Response::make($file, 200, array('content-type'=>$mimeType));
return $response;
}
另一种方法调用上述
$path = $instance->the_file_path_on_the_database;
return MyClass::getFileContent($path);
在这种情况下,如果上传的文件是PDF、png、jpeg等,浏览器会自动打开该文件,这是可以的。
但当涉及到*.xlsx或*.docx时,浏览器会问我该怎么办,但文件名与我存储在数据库中的文件名不同,而且没有扩展名。此外,文件会自动重命名为管线的名称。
提前谢谢。
根据文档
下载方法可用于生成响应,该响应强制用户的浏览器在给定路径下载文件。下载方法接受文件名作为该方法的第二个参数将确定下载文件最后,您可以传递一个HTTP头数组作为第三个方法的自变量:
return response()->download($pathToFile);
return response()->download($pathToFile, $name, $headers);