我有应用程序Laravel。
路径\storage\app\reports\
我试图通过GET网址获取文件,例如:
http://localhost:8000/storage/app/reports/report_27-05-19_05.xlsx
但这对我不起作用。
我也尝试在后端返回文件:
$file = File::get(storage_path($path.$filename));
$type = File::mimeType($path.$filename);
$response = Response::make($file, 200);
$response->header("Content-Type", $type);
return $response;
答案 0 :(得分:1)
在config文件夹中打开filesystem.php。
'reports' => [
'driver' => 'local',
'root' => storage_path('app/reports'),
'url' => env('APP_URL').'/storage/app/reports',
'visibility' => 'public',
],
将此添加到磁盘阵列。
符号链接可能有效。从未尝试过,但可以工作。试试看。
答案 1 :(得分:1)
尝试类似这样的方法。
以下示例适用于共享托管中存储的csv文件
$filename
是将随get
请求传递的已保存文件的名称
public function download($filename)
{
$name = $filename;
$file = $file = '/home/USERNAME/storage/report/'.$name;
$header = array(
'Content-Type' => 'application/csv',
'Content-Disposition' => 'attachment',
'Content-lenght' => filesize($file),
'filename' => $name,
);
// auth code
return Response::download($file, $name, $header);
}
答案 2 :(得分:0)
如果您希望文件可公开访问(没有控制器),则文件位于错误的文件夹中。
如果您希望文件可以公开访问。
@Component
@Path("iniciativas")
@Produces(MediaType.APPLICATION_JSON)
public final class IniciativasEndpoint {
@POST
public Response crearIniciativa(@Valid @NotNull(message = CONSTRAINT_BODY_NOT_NULL) @ConvertGroup(to = IniciativasGroup.Create.class)
final IniciativaDTO iniciativaDTO,
@Context UriInfo uriInfo) {
return Response.ok().build();
}
}
,运行storage/app/public
。这会将php artisan storage:link
链接到storage/app/public
。您的文件现在可以在public/storage
您还可以使用Laravel / PHP通过控制器提供文件。
http://localhost:8000/storage/report_27-05-19_05.xlsx