php - Laravel 中的文件上传
问题描述
我刚开始使用 Laravel 并尝试使用Dropzone JS进行文件上传。我可以成功上传文件,但它们会登陆app/Http/Controllers
,然后无法公开访问。
似乎将此目录视为根目录,因此如果我将 /uploads 指定为文件夹,那么它们将进入app/Http/Controllers/uploads
(这显然也不好)。使用..
s 似乎没有任何效果。
这是我的文件上传存储方法:
$ds = DIRECTORY_SEPARATOR;
$storeFolder = '';
if ( ! empty($_FILES)) {
$tempFile = $_FILES['file']['tmp_name'];
$targetPath = dirname( __FILE__ ) . $ds. $storeFolder . $ds;
$targetFile = $targetPath. $_FILES['file']['name'];
move_uploaded_file($tempFile,$targetFile);
}
我还尝试了一些我发现的其他方法(如下),但我在 Chrome 的元素检查器中遇到了 500 个错误。
来自官方文档
$path = $request->file('file')->store('uploads');
从我发现的教程中
$file = $request->file('file');
$destinationPath = '/';
$file->move($destinationPath,$file->getClientOriginalName());
从另一个教程
$uploadedFile = $request->file('file');
$filename = time().$uploadedFile->getClientOriginalName();
Storage::disk('local')->putFileAs(
'/'.$filename,
$uploadedFile,
$filename
);
当前方法看起来不错,但只需要将文件存储在公共/上传中。
解决方案
请改用此路径:
$targetPath = public_path().'/uploads/';
推荐阅读
- ruby-on-rails - 生成连续排列时如何提高内存使用率
- javascript - 在带有转义字符(双引号)的对象上使用 json 编码
- notepad++ - 如何在记事本中的多行之间搜索
- python - 从C++程序调用linux终端的录音脚本命令
- c# - C# 中的 ASP.NET Core Web 应用程序和 VB.net 中的 windows 应用程序组合
- python - 如何从 Django 中的 ManyToMany Relation 类中读取对象
- python - 在 postgresql 中存储一个大矩阵并在 python 中操作它
- angular - 代理 http:battuta.medunes.net 在生产中的角度
- sql - 有向图/层次结构 SQl
- parsing - F#为什么字符串转换失败并带有下划线