我有这个文件输入:
<input type="file" name="images[]" accept="image/*" multiple />
在我的控制器中,我以这种方式上传:
$x = 0;
foreach(Input::file('images') as $file) {
$filename = $x.'.'.$file->guessClientExtension();
//dest, name
if (!file_exists($thepath)) {
mkdir($thepath, 0777, true);
}
$uploadflag = $file->move($thepath,$filename);
$is_main = ($x==0) ? true : NULL; //Know who's first img
$img_submit = DB::table('images')->insert(array(
'image_id' => $filename,
'is_main' => $is_main
));
if($uploadflag) {
$uploadedfiles[] = $filename;
}
$x++;
}
我有一个插件可以按照我想要的方式对它们进行排序,如果我对我得到的表单执行print_r:
Array (
[title] =>
[images] => Array
(
[0] => 2.png
[1] => 1.png
[2] => 3.png
[3] => 4.png
[4] => 5.png
)
[submit] => Submit
)
您可以注意到,名称为2.png(我将其排序为第一个)的图像正在按预期容纳在数组的位置[0]中。但是当我尝试上传它时,我将变量$ is_main设置为另一个图像。 如何在数组位置[0]中识别出主图像?
我尝试使用$ x进行迭代,这样当foreach循环中$ x为0时,我将第一个图像设置为主图像,但看起来在这个过程中数组得到“dissacomodated”
编辑:如果你至少可以告诉我如何在PHP中获取数组中的第一个图像,我很容易知道如何使用Laravel: - )
答案 0 :(得分:1)
使用reset()
$files = Input::file('images');
foreach($files as $file):
$filename = $x.'.'.$file->guessClientExtension();
# Destination, Name
if (!file_exists($thepath))
mkdir($thepath, 0777, true);
$uploadflag = $file->move($thepath,$filename);
# reset() files to see if current file is the first one
$is_main = ($file == reset($files)) ? true : NULL;
$img_submit = DB::table('images')->insert([
'image_id' => $filename,
'is_main' => $is_main
]);
if($uploadflag)
$uploadedfiles[] = $filename;
endforeach;