PHP uploads multiple files with different input field names

An attempt to upload multiple files has different names. Since I only need 1 insert request, I need to load them into an array I guess. I need to insert filenames in different columns on the same row

if(isset($_FILES['MainImage'])){
  $main_image_name = $_FILES['MainImage']['name'];
  $main_image_size = $_FILES['MainImage']['size'];
  $main_image_tmp = $_FILES['MainImage']['tmp_name'];
  $uploadMainTo = $uploadLocation.$main_image_name;
  $moveMain = move_uploaded_file($main_image_tmp,$uploadMainTo);

}

if(isset($_FILES['PDF'])){
  $pdf_name = $_FILES['PDF']['name'];
  $pdf_size = $_FILES['PDF']['size'];
  $pdf_tmp = $_FILES['PDF']['tmp_name'];
  $uploadPdfTo = $uploadLocation.$pdf_name;
  $movepdf = move_uploaded_file($pdf_tmp,$uploadPdfTo);
}

      

My form looks like this:

<input type="file" name="PDF">
<input type="file" name="MainImage">

      

Query:

$query = $db->execute("INSERT INTO users (pdf=?, main_image=?) VALUES (?,?) WHERE ID=$user_id", array($pdf, $main_image) );

      

+3


source to share


2 answers


As you said in your comment:

I need to insert 2 images (2 input fields) and 1 PDF file at the same time

So, I assume you will have all the input files in your HTML markup, something like this:

<input type="file" name="PDF">
<input type="file" name="MainImage">
<input type="file" name="SecondImage">

      



In this case, the following should work to insert the file path of the uploaded file into the database:

$uploadMainTo = null;
if(isset($_FILES['MainImage'])){
  $main_image_name = $_FILES['MainImage']['name'];
  $main_image_size = $_FILES['MainImage']['size'];
  $main_image_tmp = $_FILES['MainImage']['tmp_name'];
  $uploadMainTo = $uploadLocation.$main_image_name;
  $moveMain = move_uploaded_file($main_image_tmp,$uploadMainTo);
}

$uploadSecondTo = null;
if(isset($_FILES['SecondImage'])){
  $second_image_name = $_FILES['SecondImage']['name'];
  $second_image_size = $_FILES['SecondImage']['size'];
  $second_image_tmp = $_FILES['SecondImage']['tmp_name'];
  $uploadSecondTo = $uploadLocation.$main_image_name;
  $moveSecond = move_uploaded_file($main_image_tmp,$uploadSecondTo );
}

$uploadPdfTo = null;
if(isset($_FILES['PDF'])){
  $pdf_name = $_FILES['PDF']['name'];
  $pdf_size = $_FILES['PDF']['size'];
  $pdf_tmp = $_FILES['PDF']['tmp_name'];
  $uploadPdfTo = $uploadLocation.$pdf_name;
  $movepdf = move_uploaded_file($pdf_tmp,$uploadPdfTo);
}

$query = $db->execute("INSERT INTO users (pdf, main_image, second_image) VALUES (?,?,?) WHERE ID = ?", array($uploadPdfTo, $uploadMainTo, $uploadSecondTo, $user_id) );

      

I'm just not sure if I need to initialize the variables $uploadXTo

with null

or 'NULL'

. If you have problems, please check this method.

+2


source


Correct your html first

<input name="userfile[]" type="file" /><br />
<input name="userfile[]" type="file" /><br />

      

then you can use php array



$_FILES['userfile']['name'][0]
$_FILES['userfile']['tmp_name'][0]
$_FILES['userfile']['size'][0]
$_FILES['userfile']['type'][0]

      

Check the php docs: Uploading multiple files

0


source







All Articles