该软件包允许您访问FileVault,它提供了一些加密和加密文件的方法,以及定义选项的方法,例如为每个文件设置不同的加密密钥或为文件标记Laravel文件系统。磁碟:
我们将使用FileVault ::用户加密上传文件的加密方法($ file)。此功能将删除原始未解决的文件?将其替换为同名文件?附加的.enc扩展名。
如果要重命名文件,可以将所需名称作为第二个参数传输到加密方法。如果要保存原始文件,可以使用cryptoCopy方法。
这就是我们的存储方法的样子。
\\ u0026 lt;?的PHP:
/ **
*保存使用的上传文件
*
* @param \\\\照亮\\\\ Http \\\\ $ $查询
* @return \\\\照亮\\\\ Http \\\\响应:
* /
公共功能存储(请求$ $查询)
{
if($ query- \\ u0026 gt; hasFile(“ userFile”)\\ u0026 amp; \\ uquery- \\ u0026 gt; file(“ userFile”)-\\ u0026 gt; isValid()){
$ filename =存储:: putFile(‘files /’。auth()-\\ u0026 gt; user()-\\ u0026 gt; id,$ query- \\ u0026 gt; file(“ userFile”)));
//检查我们是否上传了有效文件
如果($文件名){
FileVault ::加密($文件名);
}
}
返回重定向()-\\路线(“家”)-\\与(“消息,”上传结束);
}
接下来,我们需要查看所有用户上传的文件,并需要下载它们。
我们将在HomeController中创建一个新的下载路径和一种下载文件的新方法。
在途中::得到(\\ /文件/?????文件名} \\\\ rs00;,\\ [受邮件保护] \\\\\\ 00 \\ gt;名称(\\ s \\;下载文件\\\\ rsquo;);
\\ u0026 lt;?的PHP:
/ **
*下载文件
*
* @param string $文件名:
* @return \\\\照亮\\\\ Http \\\\响应:
* /
公共功能下载文件($文件名)
{
//主身份验证:文件将存在以检查它是否在用户目录中
if(!Storage :: has(‘files /‘。auth()-\\ u0026 gt; user()-\\ u0026 gt; id。‘/’。$ filename))){
流产(404);
}
返回response()-\\ streamDownload(使用功能()($文件名)){
FileVault :: streamDecrypt(‘files /‘。Auth()-\\ u0026 gt; user()-\\ u0026 gt; id。‘/’。$ Filename);
},Str :: changeLast(Enc。Enc“,“,$ filename)));
}
下载文件使用Laravel的本地流下载响应并获取反馈。
在反馈中,我们调用“ FileVault”应用程序提供的streamDecrypt方法,该方法将解密文件并将其提供给streamDownload方法,该方法将允许您的用户直接下载解密的文件。
现在,我们需要在下载下方显示所有用户的文件。为此,我们将$文件从HomeController索引方法修改为home.blade.php查看文件,并在下载下显示用户文件。
\\ u0026 lt;?的PHP:
/ **
*显示应用程序面板。
*
* @return \\\\照亮\\\\合同\\\\支持\\\\可呈现:
* /
公共职能指数()
{
$个文件=存储空间::文件(“文件/‘。auth()-\\ u0026 gt;用户()-\\ u0026 gt; id);
返回视图(“ home”,压缩(“ files”));
}
home.blade.php:
\\ ltlt; ul class =http://www.zhongjianghua.com/“列表组” \\
@forelse(将$文件作为$文件)
\\ ltlt;在类=http://www.zhongjianghua.com/“列表组项目” \\
\\ ltlt; a href =http://www.zhongjianghua.com/“ {{路由(“下载文件”,数据库($文件))}}”” \\ u0026>
database资料库($档案)}}
\\ ltlt; / a>
\\ ltlt; / li>
@empty:
\\ ltlt;在类=http://www.zhongjianghua.com/“列表组项目” \\您没有文件。 / li>
前言养花窍门哪里有图片价格大全喜士多(深圳湾科技生态园9栋A座-1喜士多(深圳湾科技生态园9栋A座-1:
\\ ltlt; / ul>
没错我们现在基于编码。我们为用户创建了一种上传文件,加密这些文件以及仅在用户下载文件时对其解密的方法。
当然,生产中需要采取更多的安全措施,而FileVault扩展包旨在帮助您实现这一目标。
例如,您可能要保存用户上传到Amazon S3的大文件。此扩展程序包支持文件加密/流加密。
您还可以为每个用户或每个文件的每个编码器使用不同的键,FileVault扩展框也可以使用不同的键。
资源:
您可以在GitHub创建的整个教程中找到整个Laravel程序。
如何在Laravel中加密大文件? Empcat的成功软件包应该是:JS
如何在Laravel中加密大文件?
原文地址:https://www.cnblogs.com/blogst/p/12696054.html