您好我正在尝试修复我正在处理的Laravel下载错误。我有正确的路由设置,并在控制器中正确的功能。我也能够确认我有权访问该文件,因为我使用完全相同的路径创建了一个文件并将其返回。通过这样做,我能够成功返回文件的内容。但是,当我尝试使用视图中的按钮并调用控制器函数时,我收到此错误:
FileNotFoundException in File.php line 37:
The file "The file "2016-04-04_07-21-50 - Pinging host: 192.168.2.1
2016-04-04_07-21-50 - Host 192.168.2.1 is up!
2016-04-04_07-21-50 - Pinging host: 192.168.2.2
2016-04-04_07-21-53 - Pinging host: 192.168.2.3 ...
现在这里是导致此错误的代码:
show.blade.php
<a class="btn btn-default col-md-12" href="/getDownload/{{ $now }}" role="button">Download Today's Log</a>
HonoursController.php
public function getDownload($id)
{
$file = File::get("../resources/logs/$id");
$headers = array(
'Content-Type: application/octet-stream',
);
#return Response::download($file, $id. '.' .$type, $headers);
return response()->download($file, $id.'txt', $headers);
}
我能够猜测的是我收到了500 HTTP错误。但是,我的检查并未向我提供任何其他信息。知道发生了什么事吗?
答案 0 :(得分:2)
试试这个:
public function getDownload($id)
{
// $file = File::get("../resources/logs/$id");
$headers = array(
'Content-Type: application/octet-stream',
);
#return Response::download($file, $id. '.' .$type, $headers);
return response()->download("../resources/logs/$id", $id.'txt', $headers);
}
来自文档:
下载方法可用于生成强制执行的响应 用户的浏览器以给定的路径下载文件。
返回响应() - &gt;下载($ pathToFile,$ name,$ headers);
答案 1 :(得分:1)
下载方法的第一个参数应该是文件的路径,而不是文件本身。
下载方法可用于生成强制执行的响应 用户的浏览器以给定路径下载文件。 ...
答案 2 :(得分:0)
请遵循以下两个步骤:
此处Blog是模型,$ id是指示文件的主键。存储文件名的表的列名是cover_image,因此 $ file_name = $ blog-> cover_image; 为我们提供了文件名。假设我们的文件位于Laravel公用文件夹的upload / images /中。
控制器
int stateCode = 01;
while (stateCode <= 56) {
if (line.startsWith(Integer.toString(stateCode))) {
System.out.println(stateCode);
String[] stringValues = line.split(" ");
for (int i = 0; + i < stringValues.length; i++) {
System.out.println(stringValues[i]);
}
}
stateCode++;
}
路线
`public function download(Blog $blog,$id){
$blog=$blog->find($id);
$headers = array(
'Content-Type: application/octet-stream',
);
$pathToFile=public_path('upload/images/');
$file_name=$blog->cover_image;
$download_name='Download-'.$file_name;
return response()->download($pathToFile.$file_name, $download_name, $headers);
}`
查看
在这里,['id'=> 1]表示我们要下载主键为1的文件。如果要下载另一个,只需更改任何n个整数即可。
`Route::get('{id}/file-download',['as'=>'file-download','uses'=>'BlogsController@download']); `
`