我正在努力解决问题。我有以下
$fileString = "";
if (Input::hasFile('filePath')) {
$files = Input::file('filePath');
dd($files);
foreach($files as $file) {
$file->move(public_path('uploads'), $file->getClientOriginalName());
$fileString .= public_path('uploads') . '/' . $file->getClientOriginalName();
$uploadDoc = new ReportingDocUpload();
$uploadDoc->filename = $file->getClientOriginalName();
$uploadDoc->mime = $file->getClientOriginalExtension();
$uploadDoc->filepath = $fileString;
$uploadDoc->documentId = $dsReportingDoc->id;
$uploadDoc->save();
}
}
对于每个上传的文件,它应该在数据库中创建一个新行。如果我上传3个文件
,我会显示以下内容array:3 [▼
0 => UploadedFile {#29 ▶}
1 => UploadedFile {#30 ▶}
2 => UploadedFile {#31 ▶}
]
所以这一切看起来都不错。所以,我有一个循环,它应循环每个UploadedFile并将其保存到数据库。
此刻,这种作品。为每个上传的文档添加一个新行,除了一件事之外的所有内容都是正确的。
错误的是filePath。对于第一行,这很好。数据库中的第二行包含第一个文件和第二个文件的filePath。第三行显示所有三行的filePath。这应该只包含当前文件的filePath。
我已经查看了它,并且不确定我错过了什么,但由于某种原因,这种情况正在发生。
我错过了一些明显的东西吗?
由于
答案 0 :(得分:1)
在foreach循环中移动$fileString = "";
或将$fileString .= public_path('uploads') . '/' . $file->getClientOriginalName();
更改为$fileString = public_path('uploads') . '/' . $file->getClientOriginalName();
答案 1 :(得分:1)
因为你在循环之外设置$fileString=""
,所以每次进入循环时,它都会连接到exists。
实施例
$fileString = ""
循环1:
$fileString .= a
循环2:
$fileString .= b
$fileString = ab
如果清除每个循环中的值,结果就是您所需要的,
示例:
循环1:
$fileString = ""
$fileString = a
循环2:
$fileString = ""
$fileString = b
如果使用=
而不是.=
,则可能不需要将其分配给循环内的空字符串