繁体   English   中英

我是否应该在laravel 5.2中使用批量分配进行文件上传?

[英]Should i use mass assignment for file upload in laravel 5.2?

希望每个人都做得很好。

我已经使用laravel 5.2几天了,我坚持使用我们应该使用大量分配可填写/保护插入文件和最终用户的概念,因为文件上传到服务器并且其路径存储在数据库中并从该数据库表中获取存储在媒体表中的id。

所以我的问题实际上是我们应该对上传的文件进行质量分配检查以便插入或更新。 无论哪种方式,都需要解释。 如果可能的话,请附上所示的例子以及采用的方法。

提前感谢所有人。

批量分配就是检查我们从表单中获得的输入。 如果用户尝试通过编辑源代码(进入inspect元素部分)添加字段并为其他字段提供值而不是允许(质量分配),则框架将忽略这些值。 然而,如果我们在控制器或模型文件中以编程方式对任何值进行任何更改,则更改将在后端(服务器端)由开发人员完成,而不是由公共端的某些用户完成。

是的 使用质量分配是一种很好的做法,以确保只允许字段从表单中获取值,而不是我们不希望存储在数据库中的其他字段。

我不认为文件上传和Eloquent质量分配与您想要考虑这个问题相关。 您可以在服务器上有一个固定目录,用于存储所有上载的文件,并且磁盘上的文件名与其关联模型的ID相同。

只允许对您知道的字段进行质量分配,不会被滥用,或者应用程序必须严格监控其值 - 但良好的验证应该可以过滤掉大部分问题。

例如,您可以在控制器中使用以下内容(在执行其他文件验证之后,如类型及其存在):

$user = Auth::user(); //Logged in user
$photo = new Photo([
    "caption" => $request->input('caption'),
    "location" => $request->input('location'), 
    "time" => $request->input('time'),
    "filename" => $request->file('photo')->getClientOriginalName()
]); //Eloquent model

$user->photos()->save($photo);
$request->file('photo')->move($destinationPath, $photo->id);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM