My problem is when the list input file is dynamic, so here is the code :
<?php
if(!empty($_FILES)){
$syarat = array('2','3','4','7');
$path = "./uploadtest/";
$jmlsyarat = count($syarat);
for($y = 0; $y<$jmlsyarat; $y++) {
foreach ($_FILES as $file){
$namafile = $syarat[$y].".jpg";
$tmpfile = $file['tmp_name'];
$kefile = $path.$namafile;
move_uploaded_file($tmpfile,$kefile);
}
}
}
?>
<form method="post" enctype="multipart/form-data" action="/uploadtest.php">
<input type="file" name="2" />
<input type="file" name="3" />
<input type="file" name="4" />
<input type="file" name="7" />
<input type="submit" />
</form>
Can it be done with dynamic handler that I create at above?
Thank you in advance
here is the work code (thx to #Federkun) :
<?php
if(!empty($_FILES)){
$path = "./uploadtest/";
foreach ($_FILES as $y => $file){
$namafile = $y.".jpg";
$tmpfile = $file['tmp_name'];
$kefile = $path.$namafile;
move_uploaded_file($tmpfile,$kefile);
}
}
?>
<form method="post" enctype="multipart/form-data" action="/uploadtest.php">
<input type="file" name="2" />
<input type="file" name="3" />
<input type="file" name="4" />
<input type="file" name="7" />
<input type="submit" />
</form>
That code work perfectly!
Related
I am new to php. I want to know how to change single image upload php to multi image upload.
Below is my code:-
<?php
require_once("header.php");
require_once("nav.php");
// Count total files
$countfiles = count($_FILES['files']['name']);
if ((isset($_POST["MM_insert"])) && ($_POST["MM_insert"] == "frm_add_channel")) {
if(isset($_FILES['image']['tmp_name']))
{
$file = $_FILES['image']['tmp_name'];
$image = addslashes(file_get_contents($_FILES['image']['tmp_name']));
$image_name = addslashes($_FILES['image']['name']);
move_uploaded_file($_FILES['image']['tmp_name'],"images/album" . $_FILES['image']['name']);
$albumid = $_POST['albumid'];
$name = str_replace("'","''",$name);
$place = $_POST['place'];
$place = str_replace("'","''",$place);
$owner = $_POST['owner'];
$type = $_POST['type'];
$path = $_FILES['image']['name'];
$sql = "INSERT INTO images (name,image,sys_album_id)
VALUES ('$path','$name','$albumid')";
$result = mysql_query($sql);
//$int_id = mysql_num_rows($result);
$int_id = mysql_num_rows();
echo '<script type="text/javascript">alert("Successfully Add New Channel!");location.href="gallery_upload.php";</script>';
}
}
?>
<br><br><br><br><br><br><br>
<?php echo $_GET['id'];?>
<form name="frm_add_channel" method="post" action='' enctype='multipart/form-data'>
<h4>Image (Less Than 2MB)</h4>
<img src="upload/qm.jpg" id="imgAvatar" alt="Course Image" />
<p><input type="file" name="image" id="image" onChange="showPreview(this)" accept="image/*" multiple /></p><br>
<input type="text" class="form" name="albumid" value"<?php echo $_GET['id'];?>" size="30" />
<p><input type="submit" value="Add Album" onclick="return checking()" /></p><br>
<input type="hidden" name="MM_insert" value="frm_add_channel">
</form>
try this below changed html & PHP file
$countfiles = count($_FILES['image']['name']);
for($i=0;$i<$countfiles;$i++)
{
$file = $_FILES['image']['tmp_name'][$i];
$image = addslashes(file_get_contents($_FILES['image']['tmp_name'][$i]));
$image_name = addslashes($_FILES['image']['name'][$i]);
move_uploaded_file($_FILES['image']['tmp_name'][$i],"images/album" . $_FILES['image']['name'][$i]);
......
....
}
<form name="frm_add_channel" method="post" action='' enctype='multipart/form-data'>
<h4>Image (Less Than 2MB)</h4>
<img src="upload/qm.jpg" id="imgAvatar" alt="Course Image" />
<p><input type="file" name="image[]" id="image" onChange="showPreview(this)" multiple /></p><br>
<input type="text" class="form" name="albumid" value"<?php echo $_GET['id'];?>" size="30" />
<p><input type="submit" value="Add Album" onclick="return checking()" /></p><br>
<input type="hidden" name="MM_insert" value="frm_add_channel">
</form>
I have a form where i want to upload files with multiple inputs.My form looks like:
<form action="" method="post">
<input type="file" name="tax" />
<input type="file" name="ta" />
<input type="submit" name="submit" />
</form>
I do not know how to process this form..
You form doesn't work until you don't include 'enctype="multipart/form-data"', because it is necessary to use input type file.
<form action="" method="post" enctype="multipart/form-data">
<input type="file" name="tax" />
<input type="file" name="ta" />
<input type="submit" name="submit" />
</form>
Now browse the file and submit the form. You will get all file data inside $_FILES. so to check what you get inside the file data, you can use :
echo '<pre>';
print_r($_FILES)
I'm not sure whether you have gone through the tutorials before, however below is the code which will help you to process it.
<form action="upload_file.php" method="post" enctype="multipart/form-data">
<input type="file" name="tax" />
<input type="file" name="ta" />
<input type="submit" name="submit" />
</form>
If you upload the file, you can get the files from,
$_FILES global array, i.e. $_FILES['tax'] and $_FILES['ta'].
More info can be found on php.net
<form action="" method="post" enctype="multipart/form-data">
<input type="file" name="tax" />
<input type="file" name="ta" />
<input type="submit" name="submit" />
</form>
<?php
//print_r($_POST);
if(isset($_POST['submit'])){
$name = $_FILES['tax']['name'];
$name1 = $_FILES['ta']['name'];
$temp_name = $_FILES['tax']['tmp_name'];
$temp_name1 = $_FILES['ta']['tmp_name'];
var_dump($_FILES);
if(isset($name)){
if(!empty($name)){
var_dump($_FILES);
$location = 'images/'.$name;
if(move_uploaded_file($temp_name, $location)){
echo 'File uploaded successfully';
}
}
} else {
echo 'You should select a file to upload !!';
}
if(isset($name1)){
if(!empty($name1)){
var_dump($_FILES);
$location = 'images/'.$name1;
if(move_uploaded_file($temp_name1, $location)){
echo 'File uploaded successfully';
}
}
} else {
echo 'You should select a file to upload !!';
}
}
?>
I'm learning PHP and can not find a way to make this work. Did I write correct code to upload multiple images?
I can not think of a reason why this should be wrong.
$imageName = mysql_real_escape_string($_FILES["image, drie1, drie2, drie3, add, strip"]["name"]);
$imageData = mysql_real_escape_string(file_get_contents($_FILES["image"]["tmp_name"]));
$imageType = mysql_real_escape_string($_FILES["image, drie1, drie2, drie3, add, strip"]["type"]);
HTML
<form action="file-upload.php" method="post" enctype="multipart/form-data">
Send these files:<br />
<input name="userfile[]" type="file" /><br />
<input name="userfile[]" type="file" /><br />
<input type="submit" value="Send files" />
</form>
PHP (file-upload.php)
var_dump($_FILES);
This will display the info of the uploaded files
You can add accept attribute to the input to limit the allowed filetypes by extention
Html
<form action="upload.php" method="post" enctype="multipart/form-data">
<input type="file" name="image_file[]" multiple=""> /* multiple tag is used to upload multiple files */
<input type="submit" name="Submit" value="Submit" />
</form>
Php
<?php
foreach($_FILES["image_file"]["name"] as $key => $value)
{
$name = $value;
$tmp_name = $_FILES["image_file"]["tmp_name"][$key];
$type = $_FILES["image_file"]["type"][$key];
echo $name." , ".$tmp_name." , ".$type."\n";
}
?>
I need to upload a file in a folder but the file never get in the folder. The name of the file is added correctly but no file in the folder. What is going wrong?
Php error: Undefined index: foto on line 12-16
$name= $_FILES["foto"]["name"];
$type= $_FILES["foto"]["type"];
$size= $_FILES["foto"]["size"];
$temp= $_FILES["foto"]["temp_name"];
$error= $_FILES["foto"]["error"];
if ($error > 0)
die("Error uploading file! code $error.");
else
{
if($type=="image/png" || $size > 2000000)//condition for the file
{
die("Format not allowed or file size too big!");
}
else
{
move_uploaded_file($temp,"assets/");
echo "Upload complete!";
}
}
HTML:
<form id="form" style="margin-left: 200px" action="addNewProduct.php" method="post"><br>
<br>
<br>
<div id="imageUpload">
<label for="foto">Foto</label>
<input type="file" name="foto" /><br>
</div>
<div id="infoForm">
<label for="productNaam">Productnaam</label>
<input type="text" name="productNaam"/><br>
<br>
<label for="beschrijving">Productbeschrijving</label>
<input type="text" name="productBeschrijving" /><br>
<br>
<label for="btw">BTW</label>
<input type="number" name="productBtw" /><br>
<br>
<label for="prijsinclbtw">PrijsInclBTW</label>
<input type="number" name="productPrijsInclBtw" /><br>
<br>
<br>
<br>
<input type="submit" name="submit" value="Add new Pen">
</div>
</form>
Your $_FILES["foto"]["temp_name"]; is incorrect, you should change it to $_FILES["foto"]["tmp_name"];
And your folder assets should exist in your root folder.
Your form should like this:
<form action="uploads.php" method="post" enctype="multipart/form-data">
<input type="file" name="foto">
<input type="submit" name="submit">
</form>
Please try this, hope this help you out : uploads.php
$type= $_FILES["foto"]["type"];
$size= $_FILES["foto"]["size"];
// $temp= $_FILES["foto"]["temp_name"];
$file_name = $_FILES["foto"]["name"];
$source = $_FILES['foto']['tmp_name'];
$dir = "./assets/";
$file = $dir . $file_name;
//$directory = "./assets/upload/$file_name";
if(!file_exists ($file ))
{
move_uploaded_file($source,$file );
exit();
}
else
{
echo "File exist";
}
When you upload files, form has to have enctype attribute.
<form enctype="multipart/form-data" id="form" style="margin-left: 200px" action="addNewProduct.php" method="post">
^^
I want to count set file upload. Here is my using code. Are there any better method to do this. Thanks.
<form action="index.php" method="post" enctype="multipart/form-data">
<input name="new_image[]" type="file" />
<input name="new_image[]" type="file" />
<input name="new_image[]" type="file" />
<input name="new_image[]" type="file" />
<input name="new_image[]" type="file" />
<button name="submit" type="submit">Upload</button>
</form>
<?php
$img_error = '0';
$fill_img_count = '0';
if(isset($_POST['submit']))
{
$img_count = count($_FILES['new_image']);
echo "Total : ".$img_count."<br>";
for ($i=0 ; $i<=$img_count ; $i++)
{
if (isset($_FILES['new_image']) && !empty($_FILES['new_image']['name'][$i]))
{
$fill_img_count++;
}
}
echo "Set : ".$fill_img_count."<br>";
}
?>
$count_files = 0;
foreach ($_FILES['picture']['error'] as $item) {
if ($item != 4) {
$count_files++;
}
}
echo $count_files;
I'd recommend testing each ['error'] key against UPLOAD_ERR_OK.
You don't require to have name="new_image[]" as the name ... just new_image will suffice. If you post 1 or many, on the PHP side, you'll see $_FILES[]
Some useful links for you:
http://php.net/manual/en/reserved.variables.files.php
http://www.php.net/manual/en/features.file-upload.php
Some code:
if (empty($_FILES)) { echo "0 files uploaded"; }
else { echo count($_FILES) . " files uploaded"; }
Edit based on comment:
How to handle multiple file upload using PHP
From that post:
echo count($_FILES['file']['tmp_name']);
<?php
$count = 0;
foreach($_FILES['new_image']['error'] as $status){
if($status === UPLOAD_ERR_OK) {
$count++;
}
}
var_dump($count);
?>
<form action="test.php" method="post" enctype="multipart/form-data">
<input name="new_image[]" type="file" />
<input name="new_image[]" type="file" />
<input name="new_image[]" type="file" />
<input name="new_image[]" type="file" />
<input name="new_image[]" type="file" />
<button name="submit" type="submit">Upload</button>
</form>