它清楚地表明$ file_ids是数组类型但仍然得到这个错误,我使用不同的函数来知道变量的数据类型,如gettype()它也返回array.please帮助我摆脱这个头痛。 提前谢谢。
public function getFilesForLink(Request $request)
{
$file_ids = array();
$ids = $request->input('selected_file');
if (count($ids) > 0) {
foreach ($ids as $id => $value) {
$file_ids[] = base64_decode($value);
}
}
$link_id = $this->makeDownloadLink($file_ids, $_POST['password']);
if ($_POST['via'] == 'Email') {
$files = File::find($file_ids);
foreach ($files as $name) {
$files_name[] = $name->name;
}
$this->sendEmail($files_name, $link_id, $_POST['recipient'],
$_POST['subject'], $_POST['body']);
}
答案 0 :(得分:1)
在一个地方,您使用的是$file_ids
,而在其他地方$files_ids
,请确保您使用的是相同的变量。
此外,您确定$file_ids
阵列中有有效值吗?
查看评论的问题是:
$downloadLink->file_ids = $file_ids;
在makeDownloadLink
方法内。
你正在做这样的事情:
if (count($file_ids) > 1) {
$downloadLink->file_ids = implode(',', $file_ids);
}
$downloadLink->file_ids = $file_ids;
,当$file_ids
为数组时,这将失败。您应该像这样添加else
:
if (count($file_ids) > 1) {
$downloadLink->file_ids = implode(',', $file_ids);
}
else {
$downloadLink->file_ids = $file_ids;
}
答案 1 :(得分:0)
检查这段代码
$files = File::get($file_ids);
将get()
替换为find()
$files = File::find($file_ids);