上传文件时,文件大小统计失败

时间:2017-09-05 12:17:23

标签: php laravel file-upload laravel-5 laravel-5.5

我现在面临着奇怪的问题 - “filesize():对于C:\ xampp \ tmp \ php7A38.tmp”异常,stat失败了。当我在使用PHP(Laravel)构建的应用程序中上载文件时会出现问题。

在我将文件上传到服务器之前,我正在检查这样的文件大小(这很有效):

for ($i = 0; $i < $filesLength; $i++) {
   if(filesize($request['files'][$i]) < 1572865) {
      $file = $request['files'][$i];
      $filename = $imageNumber.'.'.$request['files'][$i]->extension();
      $file = $file->move(public_path().'/app/newsimages/'.$element->id.'/', $filename);
   }
}

如果我这样做,一切都很顺利。但问题是我必须把这个循环放在另一个循环中,如下所示:

foreach($somelement as $element) {
  for ($i = 0; $i < $filesLength; $i++) {
    if(filesize($request['files'][$i]) < 1572865) {
      $file = $request['files'][$i];
      $filename = $imageNumber.'.'.$request['files'][$i]->extension();
      $file = $file->move(public_path().'/app/newsimages/'.$element->id.'/', $filename);
    }
  }
}

除此之外,它还会在foreach循环的第二个循环中崩溃

也许你对这里的错误有所了解?

1 个答案:

答案 0 :(得分:1)

我认为这很明显,在内部循环中你移动文件,所以当你去外循环文件的下一次迭代时不存在,所以例如你曾经移动过文件:

$request['files'][0]

无法执行:

filesize($request['files'][0])

因为此文件已被移动 - 它不再存在。