0

我现在面临一个奇怪的问题 - “filesize(): stat failed for C:\xampp\tmp\php7A38.tmp”异常。当我在使用 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 循环的第二个循环中崩溃。

也许你知道这里出了什么问题?

4

1 回答 1

1

我认为这很明显,在内部循环中移动文件,因此当您进行下一次迭代时,外部循环文件不存在,例如,如果您曾经移动文件:

$request['files'][0]

无法执行:

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

因为这个文件被移动了——它不再存在了。

于 2017-09-05T13:51:35.293 回答