小编Lih*_*hai的帖子

如何在Laravel 5中获取上传文件的公共URL

您可能知道Laravel使用Flysystem PHP包来提供文件系统抽象.我开始在我的项目中使用此功能,只是为了将一些图像上传到我的Amazon s3存储桶,我还将Cloudfront实例链接到此存储桶.我的问题是当我试图在我的html页面中显示这些图像时,我需要一个网址.

我找不到任何"干净"的方式去做,因为flysystem是通用库,我可以做到这样的事情:

Storage::disk('my_awesome_disk')->publicUrl("{$path}/{$image->name}")
Run Code Online (Sandbox Code Playgroud)

对于'公共'文件,它很容易确定文件是否为"公共",因为它包含在他们的api中,所以如果我使用s3 bucket作为我的磁盘驱动程序我应该得到:" https://s3.amazonaws. com/my_awesome_bucket/path/image.png "

或者:

Storage::disk('my_awesome_disk')->signedUrl("{$path}/{$image->name}", $timeout)
Run Code Online (Sandbox Code Playgroud)

对于'私人'文件 - 我应该得到一个暂时的网址,将在一段时间后过期.

这是我只能通过具体实施才能实现的吗?例如,如果我使用亚马逊S3我可以轻松运行:

$signed_url = $s3Client->getObjectUrl($bucket_name,
                        $resource_key,
                        "+{$expires} minutes");
Run Code Online (Sandbox Code Playgroud)

但我不想做丑陋的"切换案例"来确定我使用的驱动程序.我如何通过FileSystem接口从cdn(如cloudfront)获取URL?有什么建议吗?

php filesystems laravel

9
推荐指数
1
解决办法
5316
查看次数

如何在 Angular 2 中动态渲染模板?

我试图通过使用 Angular 2 的传统“#”字符引用它们来在视图中动态选择模板。在我的项目中,我处理错误并将它们显示给用户,我有一个对话框组件,它的内容应该基于动态 html注入,这就是为什么我使用模板。

我阅读了一些文章,这些文章展示了一种方法,当我已经知道模板引用的名称时,我不知道引用的名称,我在运行时得到了名称。我特别遵循了本指南:https : //www.bennadel.com/blog/3101-experimenting-with-dynamic-template-rendering-in-angular-2-rc-1.htm

所以目前我的对话框组件具有以下视图:

<template #err_1 let-property1="p1" let-property2="p2">
property1: {{p1}}
property2: {{p2}}

</template>

<template #err_2 let-property1="p1" let-property2="p2">
<p *ngIf="p1">{{p1}}</p>
property2: {{p2}}
</template>

<!--The code for the template directive i took from the guide in the link above-->
<tem [render]="templateRef"
     [context]="context">
</tem>
Run Code Online (Sandbox Code Playgroud)

在我的 dialog.ts 我有以下代码:

@Component({
  selector: 'error-dialog',
  queries: {
    templateRef: new ViewChild("err_1")
  },
  templateUrl: './dialog.html'
})
...
Run Code Online (Sandbox Code Playgroud)

“TemplateRendererDirective”指令源是我从上面链接中的指南中获取的。注意是什么让我感到困惑:templateRef 基本上得到一个对象:“ViewChild”,即使指令最终得到 TemplateRef 实例,这怎么可能?

所以只有当我知道我想要呈现哪个错误模板时,例如:“err_1”我只是在 dialog.ts 中预先引用它,但事实并非如此,我想动态地告诉我想要呈现“err_1”、“err_2”等.. 并给出上下文(这是用数据填充该模板的对象 - 例如 p1、p2,也是动态的)

有可能做到吗?

javascript angular

3
推荐指数
1
解决办法
2772
查看次数

Laravel使用Ajax上传文件

我正在使用Laravel框架.我有一种向数据库添加新项目的形式,用户也可以拖放文件.然后,显示进度条直到完成,使用Ajax将文件上载到服务器.

提交该表单后,我addItem在控制器中运行该函数,我想做/检查:

  1. 该文件已托管在服务器中(成功上载)
  2. 如果文件托管在服务器中,我该如何找到它?(我给它一个随机的名字)
  3. 如果用户选择不提交表单,我希望从服务器中删除该文件,因此我不会将文件连接到我的数据库中的任何项目

您能否就如何完成这些任务提出任何建议?

php ajax jquery file-upload laravel

2
推荐指数
1
解决办法
1万
查看次数

标签 统计

laravel ×2

php ×2

ajax ×1

angular ×1

file-upload ×1

filesystems ×1

javascript ×1

jquery ×1