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) );
source to share
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.
source to share
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
source to share