#php
#php
Вопрос:
Я пытаюсь загрузить фотографии в определенную папку, а также сохранить их URL-адрес в базе данных, но у меня возникает проблема с неопределенным индексом!
Это код, который используется для загрузки изображений
$time = time();
$_SESSION['storeid'] = 11;
$target_dir = "uploads/store/products/";
$target_file1 = $target_dir . basename($_FILES["productimages1"]["name"]) . $_SESSION['storeid'] . $time;
$target_file2 = $target_dir . basename($_FILES["productimages2"]["name"]) . $_SESSION['storeid'] . $time;
$target_file3 = $target_dir . basename($_FILES["productimages3"]["name"]) . $_SESSION['storeid'] . $time;
$uploadOk = 1;
$imageFileType1 = pathinfo($target_file1,PATHINFO_EXTENSION);
$imageFileType2 = pathinfo($target_file2,PATHINFO_EXTENSION);
$imageFileType3 = pathinfo($target_file3,PATHINFO_EXTENSION);
move_uploaded_file($_FILES["productimages1"]["tmp_name"] . $_SESSION['storeid'] . $time, $target_file1);
move_uploaded_file($_FILES["productimages1"]["tmp_name"] . $_SESSION['storeid'] . $time, $target_file2);
move_uploaded_file($_FILES["productimages1"]["tmp_name"] . $_SESSION['storeid'] . $time, $target_file3);
$image1=basename( $_FILES["productimages1"]["name"] . $_SESSION['storeid'] . $time,".jpg");
$image2=basename( $_FILES["productimages2"]["name"] . $_SESSION['storeid'] . $time,".jpg");
$image3=basename( $_FILES["productimages3"]["name"] . $_SESSION['storeid'] . $time,".jpg");
и html
<form action="" method="post">
<input type="file" name="productimages1[]" id="product1" />
<input type="file" name="productimages2[]" id="product1" />
<input type="file" name="productimages3[]" id="product1" />
</form>
Может кто-нибудь посмотреть, что с этим не так?
Ответ №1:
- Добавьте
enctype="multipart/form-data"
в свою форму.<form action="" method="post" enctype="multipart/form-data"> ... ... </form>
- В php, поскольку ваши файлы хранятся в виде массива для многократной загрузки, используйте цикл. Нравится:
$time = time(); $_SESSION['storeid'] = 11; $target_dir = "uploads/store/products/"; if(!empty($_FILES["productimages1"])){ foreach($_FILES["productimages1"] as $image1){ if(!empty($image1['tmp_name'])){ $target_file1 = $target_dir . basename($image1["name"]) . $_SESSION['storeid'] . $time; move_uploaded_file($image1["tmp_name"] . $_SESSION['storeid'] . $time, $target_file1); } } }
Комментарии:
1. Ваш код не работает с приведенной выше формой. Проверьте имена полей ввода: productimages1[], productimages2[], productimages3[]. Но вы пытаетесь выполнить цикл productimages1. Это не сработает. Поэтому вам также нужно настроить HTML-форму.
Ответ №2:
Проверьте это,
<?php
if(isset($_POST['submit'])){
$time = time();
$_SESSION['storeid'] = 11;
$target_dir = "uploads/store/products/";
$target_file1 = $target_dir . $_SESSION['storeid'] . $time.$_FILES["productimages1"]["name"];
$target_file2 = $target_dir . $_SESSION['storeid'] . $time.$_FILES["productimages2"]["name"];
$target_file3 = $target_dir . $_SESSION['storeid'] . $time.$_FILES["productimages3"]["name"];
move_uploaded_file($_FILES["productimages1"]["tmp_name"], $target_file1);
move_uploaded_file($_FILES["productimages2"]["tmp_name"], $target_file2);
move_uploaded_file($_FILES["productimages3"]["tmp_name"], $target_file3);
}
?>
<form action="" method="post" enctype="multipart/form-data">
<input type="file" name="productimages1" id="product1" />
<input type="file" name="productimages2" id="product1" />
<input type="file" name="productimages3" id="product1" />
<input type="submit" value="submit" name="submit"/>
</form>
Добавлено enctype="multipart/form-data"
в вашу форму. Это требуется при загрузке файлов на сервер.
Комментарии:
1. Все еще неопределенный индекс!