Я пытаюсь добавить еще одно поле в форме загрузки, чтобы иметь возможность загрузить 3 изображения в одной форме. Проблема в том, что два изображения должны сохранять другой путь в БД с третьего изображения. Например image_1
и image_2
сохраняются http://example.com/img/
и третьего изображения в ../images/
Несколько загружать форму изображения не сохраняет имя пользователя
В настоящее время, когда я заполняю поля со всех 3-х изображений в базе данных я спасся это имя для них - 4649d81924f1b17db1444d72ee271f6c-Array
Это HTML форма
<form role="form" action="" method="post" enctype="multipart/form-data">
<!-- File Button -->
<div class="form-group">
<label for="image">image</label>
<input value="<?php echo !empty($image)?$image:'';?>" id="image" name="file[]" multiple="multiple" class="input-file" type="file">
</div>
<!-- File Button -->
<div class="form-group">
<label for="rest_img_big">Image 2</label>
<input value="<?php echo !empty($rest_img_big)?$rest_img_big:'';?>" id="rest_img_big" name="file[]" multiple="multiple" class="input-file" type="file">
</div>
<!-- File Button -->
<div class="form-group">
<label for="web_image">Image 3</label>
<input value="<?php echo !empty($web_image)?$web_image:'';?>" id="web_image" name="file[]" multiple="multiple" class="input-file" type="file">
</div>
</form>
и это PHP часть для изображения загрузить
if (!empty($_POST) && isSet($_POST['submit']))
{
define('MAX_FILE_SIZE', 20000000430);
$permitted = array('image/jpeg', 'image/jpeg', 'image/png', 'image/gif');
// keep track post values
$fileName = $_FILES['file']['name'];
$tmpName = $_FILES['file']['tmp_name'];
$fileSize = $_FILES['file']['size'];
$fileType = $_FILES['file']['type'];
// make a new image name
$ext = substr(strrchr($fileName, "."), 1);
// generate the random file name
$randName = md5(rand() * time()) . '-' .$fileName;
// save image path
$path = "../../img/".$randName;
$forDB = "http://example/img/".$randName;
if (in_array($fileType, $permitted))
{
$result = move_uploaded_file($tmpName, $path);
if (!$result)
{
echo "Error uploading image file";
exit;
}
}
// update data
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$sql = "UPDATE images set image = ?, rest_img_big = ?, web_image = ? WHERE user_id = ?";
$q = $pdo->prepare($sql);
$q->execute(array($forDB,$forDB,$path,$user_id));
Итак, любое предложение, как я могу исправить эту проблему и одновременно загрузить 3 изображения?
UPDATE: Текущий код
if (!empty($_POST) && isSet($_POST['submit']))
{
define('MAX_FILE_SIZE', 20000000430);
$permitted = array('image/jpeg', 'image/jpeg', 'image/png', 'image/gif');
// keep track post values
for($i=0; $i < count($_FILES['file']['name']); $i++){
$fileName = $i.$_FILES['file']['name'][$i]; //get unique name
$tmpName = $_FILES['file']['tmp_name'][$i];
$fileSize = $_FILES['file']['size'][$i];
$fileType = $_FILES['file']['type'][$i];
// make a new image name
$ext = substr(strrchr($fileName, "."), 1);
// generate the random file name
$randName = md5(rand() * time()) . '-' .$fileName;
// save image path
$web = "../../img/".$randName;
$smallImageForApp = "http://example/img/".$randName;
$bigImageForApp = "http://example/img/".$randName;
if (in_array($fileType, $permitted))
{
$result = move_uploaded_file($tmpName, $web);
if (!$result)
{
echo "Error uploading image file";
exit;
}
}
else {
// update data
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$sql = "UPDATE images set image = ?, rest_img_big = ?, web_image = ? WHERE user_id = ?";
$q = $pdo->prepare($sql);
$q->execute(array($smallImageForApp,$bigImageForApp,$web,$user_id));
}
UPDATE 2: var_dump ($ _ FILES);
array(1) {
["file"]=> array(5)
{
["name"]=> array(3)
{
[0]=> string(21) "23.jpg_1418028921.jpg"
[1]=> string(15) "_1418028891.jpg"
[2]=> string(6) "78.jpg"
}
["type"]=> array(3)
{
[0]=> string(10) "image/jpeg"
[1]=> string(10) "image/jpeg"
[2]=> string(10) "image/jpeg"
}
["tmp_name"]=> array(3)
{
[0]=> string(14) "/tmp/phpfqqJG3"
[1]=> string(14) "/tmp/phptp9zcF"
[2]=> string(14) "/tmp/phpTkmuIg"
}
["error"]=> array(3)
{
[0]=> int(0)
[1]=> int(0)
[2]=> int(0)
}
["size"]=> array(3)
{
[0]=> int(25878)
[1]=> int(25878)
[2]=> int(35864)
}
}
}
array(1)
{
//same thing 3 times
}
Я попытался с петлей, как вы предлагаете имя снова 'randomstring-Array' и изображение не загружать в папку. Только имя сохраняется в БД. –
попробуйте сейчас, я добавил для цикла – Saqueib
Хорошо, теперь изображение загружается, но 3 раза такое же изображение. Я имею в виду, что он принимает первое изображение поля ввода и загружается 3 раза. –