从laravel 5.3

时间:2017-03-09 18:42:13

标签: php html5 laravel-5 hyperlink laravel-filesystem

我想创建一个超链接来下载我的storage / app / public文件夹中的文件。我在刀片中使用它

<a href="{{ asset('storage/app/public/1489082996.docx') }}" download="{{ asset('storage/app/public/1489082996.docx') }}"> Read Paper</a>

但这显示我找不到错误文件。我该怎么办 做 这是我的filesystem.php

'disks' => [

        'local' => [
            'driver' => 'local',
            'root' => storage_path('app'),
        ],

        'public' => [
            'driver' => 'local',
            'root' => storage_path('app/public'),
            'visibility' => 'public',
        ],

2 个答案:

答案 0 :(得分:2)

一种简单的方法,允许您将文件存储在存储文件夹中,并允许在没有系统更改的情况下下载:(在laravel 5.3中)

您可以建立文件的正常链接:

<a href="/download/1489082996.docx"> Read Paper</a>

然后你需要配置你的routes / web.php

Route::get('/download/{file}', function ($file='') {
    return response()->download(storage_path('app/public/'.$file)); 
});

这应该打开所有类型文件的下载对话框,也适用于img和pdf&#39。如果要在线显示文件而不下载,则应使用文件方法:

return response()->file(storage_path('app/public/'.$file));

答案 1 :(得分:0)

资产路径相对于@Override public Mono<Void> save(AccountDTO accountDTO) { return Mono.create(voidMonoSink -> { Account account = converter.map(accountDTO, Account.class); ListenableFuture<Void> voidListenableFuture = mappingManager.mapper(Account.class).saveAsync(account); Futures.addCallback(voidListenableFuture, new FutureCallback<Void>() { @Override public void onSuccess(Void result) { voidMonoSink.success(result); } @Override public void onFailure(Throwable t) { log.error("Unable to save account " + accountDTO, t); voidMonoSink.error(new MyCustomException()); } }); }); } 目录。因此,您只需要/public假设您已将syz链接到asset('1489082996.docx')