在我的代码中,您可以选择是否上传文件,如果您不是应该结束代码,但是如果您上传文件并选择适当的包名称(这是一个数据库)他们创建的名称然后它是运行代码并提交到文件目录。但我的问题是在这行代码中
if($_FILES['packFiles']['error'] == UPLOAD_ERR_OK){
它检查文件是否为空或"没有错误"它运行里面的代码,但因为我有一个"多个文件上传"像这样
<input type="file" name="packFiles[]" multiple>
它会跳过它并结束代码。我注意到当我移除多个部分并且它完美地工作时。所以我的问题是,如果有一种方法可以检查它是否为空,同时允许用户上传多个文件。这是我的代码。
PHP
<?php
session_start();
if(empty($_FILES) && empty($_POST) && isset($_SERVER['REQUEST_METHOD']) && strtolower($_SERVER['REQUEST_METHOD']) == 'post'){ //catch file overload error...
$postMax = ini_get('post_max_size'); //grab the size limits...
echo "<p style=\"color: #F00;\">\nPlease note files larger than {$postMax} will result in this error!</p>"; // echo out error and solutions...
return $postMax;
}
if(isset($_COOKIE['id'])){
if($_SESSION['came_from_upload'] != true){
setcookie("id", "", time() - 60*60);
$_COOKIE['id'] = "";
header("Location: developerLogin.php");
exit;
}
echo "<h1> UPDATE PACK FILES INFORMATION</h1>";
try{
// new php data object
$handler = new PDO('mysql:host=127.0.0.1;dbname=magicserver', 'root', '');
//ATTR_ERRMODE set to exception
$handler->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
}catch(PDOException $e){
die("There was an error connecting to the database");
}
$userid = $_SESSION['id'];
$stmt = $handler->prepare("SELECT * FROM pack_profile WHERE pack_developer_id = :userid");
$stmt->bindParam(':userid', $userid, PDO::PARAM_INT);
$stmt->execute();
echo "<h2> Please select the pack name you want to update!</h2>";
if($_SERVER['REQUEST_METHOD'] =="POST"){
$token = $_SESSION['token'];
if(!empty($_POST['packNameSelection'])){
$price = addslashes(trim((int)$_POST['price']));
$description = addslashes(trim($_POST['description']));
$packname = addslashes(trim($_POST['pack_name']));
$packNameSelection = $_POST['packNameSelection'];
if(!empty($packname)){
$stmtPacknameCheck = $handler->prepare("SELECT * FROM pack_profile WHERE pack_name = :packname");
$stmtPacknameCheck->bindParam(':packname', $packname, PDO::PARAM_STR);
$stmtPacknameCheck->execute();
if($stmtPacknameCheck->fetch()){
echo "Packname entered is already in use... Please try again";
exit;
}
$stmtPackname = $handler->prepare("UPDATE pack_profile SET pack_name = :packname WHERE pack_name = :packNameSelection");
$stmtPackname->bindParam(':packname', $packname, PDO::PARAM_STR);
$stmtPackname->bindParam(':packNameSelection', $packNameSelection, PDO::PARAM_STR);
$stmtPackname->execute();
}
if(!empty($price)){
if(!ctype_digit($price)){
echo "PRICE ENTERED IS NOT AN INTEGER... PLEASE TRY AGAIN!";
exit;
}
$stmtPrice = $handler->prepare("UPDATE pack_profile SET pack_price = :price WHERE pack_name = :packNameSelection");
$stmtPrice->bindParam(':price', $price, PDO::PARAM_INT);
$stmtPrice->bindParam(':packNameSelection', $packNameSelection, PDO::PARAM_STR);
$stmtPrice->execute();
}
if(!empty($description)){
if(strlen($description) < 10){
echo "Description field MUST to be GREATER than 10 characters!";
exit;
}
$stmtDescription = $handler->prepare("UPDATE pack_profile SET pack_description = :description WHERE pack_name = :packNameSelection");
$stmtDescription->bindParam(':description', $description, PDO::PARAM_STR);
$stmtDescription->bindParam(':packNameSelection', $packNameSelection, PDO::PARAM_STR);
$stmtDescription->execute();
}
if(!empty($_FILES['packFiles']['tmp_name'])){
$stmtPackCheck = $handler->prepare("SELECT * FROM pack_profile WHERE pack_name = :packNameSelection");
$stmtPackCheck->bindParam(':packNameSelection', $packNameSelection, PDO::PARAM_STR);
$stmtPackCheck->execute();
$resultPack = $stmtPackCheck->fetch();
$file_name = "";
$packid = $resultPack['pack_id'];
foreach($_FILES['packFiles']['tmp_name'] as $key => $error){
if ($error != UPLOAD_ERR_OK) {
$errors[] = $_FILES['packFiles']['name'][$key] . ' was not uploaded.';
continue;
}
$pack_tmp = file_get_contents($_FILES['packFiles']['tmp_name'][$key]);
$pack_filename = preg_replace("/[^a-z0-9\.]/", "_", strtolower($_FILES['packFiles']['name'][$key]));
$pack_filename = strtotime("now")."_".$pack_filename;
$file_name .= $_FILES['packFiles']['name'][$key].",";
//Insert into file directory
$dir = "devPacks/" .$userid."/".$packid;
if(is_dir($dir)==false){
mkdir($dir, 0777, true);
}
if(!move_uploaded_file($_FILES['packFiles']['tmp_name'][$key],$dir.'/'.$pack_filename)){
die("an error occurred sending this file... Pleas try again later!");
}
}
}
die("ok");
}else{
echo "Please select valid value from dropdown list";
exit;
}
}
}
?>
<form method="post" enctype="multipart/form-data" autocomplete="off">
<select name="packNameSelection">
<option value="" disabled selected>Select Your Pack Name</option>
<?php
while($result = $stmt->fetch()){
echo "<option value=\"" . $result['pack_name'] . "\">" . $result['pack_name'] ."</option>";
}
?>
</select>
<br>
Pack Name: <input type="text" name="pack_name" placeholder="Your pack name">
<input type="hidden" name="post_id">
<br></br>
Price: <input type="text" name="price" placeholder="If FREE enter 0">
<br></br>
Descripion: <textarea rows="4" cols="50" name="description" placeholder="Description..."></textarea>
<br></br>
Select Pack Files: <input type="file" name="packFiles[]" multiple>
<br></br>
<!--Select Pack Screenshots/Video: <input type="file" name="file[]" multiple> -->
<br></br>
<input type="submit" name="submit">
</form>
答案 0 :(得分:4)
我们可以将其用于输入多个文件:
if(!empty($_FILES['packFiles']['name'][0])){
// do something
}
答案 1 :(得分:1)
// check and see whether is empty
if(!empty($_FILES['packFiles']['name'])){
foreach($_FILES['packFiles']['tmp_name'] as $key => $error){
$filename = file_get_contents($_FILES['packFiles']['tmp_name'][$key];
// check file_get_contents
if($pack_tmp = file_get_contents($filename) !== false){
$pack_filename = preg_replace("/[^a-z0-9\.]/", "_", strtolower($_FILES['packFiles']['name'][$key]));
$pack_filename = strtotime("now")."_".$pack_filename;
$file_name .= $_FILES['packFiles']['name'][$key].",";
//Insert into file directory
$dir = "devPacks/" .$userid."/".$packid;
if(is_dir($dir)== false){
mkdir($dir, 0777, true);
}
if(move_uploaded_file($_FILES['packFiles']['tmp_name'][$key],$dir.'/'.$pack_filename)){
}else{
die("an error occurred sending this file... Pleas try again later!");
}
}
}
}else{
//error any error message u want.
}
在foreach循环之前检查文件
答案 2 :(得分:0)
if( isset($_FILES['packFiles']) and count($_FILES['packFiles']['tmp_name']) > 0 )
{
// Your code
}