我有一个我似乎无法解决的问题,我在前端上传多个文件,但我需要获取这些文件的路径,以便我可以在另一个程序中下载文件。
我的模型看起来像这样:
public $attachMany = [
'fileuploader' => 'System\Models\File'
];
然后我在组件上尝试了这样的傻事:
$quote->fileuploader = Input::file('fileuploader');
foreach ($quote->fileuploader as $file) {
Db::table('auto_quotes')->where('quote_no', $quote->quote_no)->update(['path' => $file->fileuploader->getPath()]);
}
但是我得到了getPath = null的结果。
任何人都知道我应该怎么做?
答案 0 :(得分:1)
hmm可能是你的代码需要一点点修正,
我们也需要save $quote
使用files
我猜。
$quote->fileuploader = Input::file('fileuploader');
// save it before using
$quote->save();
foreach ($quote->fileuploader as $file) {
Db::table('auto_quotes')
->where('quote_no', $quote->quote_no)
->update(['path' => $file->getPath()]); // <- correction
}
而不是使用
$file->fileuploader->getPath()
只需使用$file->getPath()
因为我们已经遍历$quote->fileuploader
而且每个文件都是$file
所以我们不需要使用$file->fileuploader
我们可以使用$file
本身
如果仍然有问题请发表评论。
答案 1 :(得分:0)
如果我是你,我会在上传后保存我的文件,然后很容易保存路径以便您可以在其他程序中下载文件:
public function savePath($file)
{
$file = Input::file('fileuploader');
$destinationPath = ‘storage/uploads/yourFolder’;
$file->move($destinationPath,$file->getClientOriginalName());
Db::table('auto_quotes')->where('quote_no', $quote->quote_no)->update(['path' => $destinationPath]);
}
如果您需要保存$destinationPath
或$destinationPath.$file->getClientOriginalName()
PS:将文件存储在storage
文件夹中,否则可能会出现权限问题