php - 使用具有许多功能的 PHP 上传多张图片
问题描述
如何使用 PHP 上传多张图片?此代码适用于上传单个文件,但需要添加功能来上传多个图像。
<?php
$result = 0;
define('FORUM_PATH', 'full_patch');
require_once (FORUM_PATH . 'api_member_login.php');
$ipbMemberLoginApi = new apiMemberLogin();
$ipbMemberLoginApi->init();
$member = $ipbMemberLoginApi->getMember();
$id = ($member['member_id']);
$foldername = date("Y_m_d");
$uploads_folder = "uploads";
$upload_folder = "uploads/$id/$foldername";
if (file_exists($upload_folder)) {
} else {
mkdir("$uploads_folder/$id", 0755);
mkdir("$upload_folder", 0755);
}
if (is_uploaded_file($_FILES['myfile']['tmp_name']) && ($_FILES["myfile"]["size"] <= 18192 * 1 * 18192)) {
$enabled = array(IMAGETYPE_PNG, IMAGETYPE_JPEG, IMAGETYPE_PNG, IMAGETYPE_GIF);
list($width, $height, $extension) = getimagesize($_FILES['myfile']['tmp_name']);
if (in_array($extension, $enabled)) {
$newname = uniqid() . "_" . $_FILES['myfile']['name'];
$imglink = $upload_folder . '/' . $newname;
if (@move_uploaded_file($_FILES['myfile']['tmp_name'], "$upload_folder/" . $newname))
include ("class.ExifCleaning.php");
ExifCleaning::adjustImageOrientation($imglink);
$max_width = 1024;
$max_height = 800;
$im = new Imagick();
$im->readImage($imglink);
$im->stripImage();
$im->resizeImage(min($im->getImageWidth(), $max_width), min($im->getImageHeight(), $max_height), imagick::FILTER_CATROM, 1, true);
if (file_put_contents($imglink, $im)) {
require ('watermarkImagick.php');
$result = 1;
}
} else {
$result = 0;
}
}
?>
HTML:
<form id="imgUplForm" action="api.php" method="post" enctype="multipart/form-data" target="upload_target" onchange="startUpload();">
<div id="imageUpload">Upload
<p id="myf1_upload_process"><img src="uploadstat.gif" border="0" /></p>
<p id="myf1_upload_form" align="left">
<input type="file" id="file_browse" name="myfile" onchange="this.form.submit()" accept="image/*" />
</p>
</div>
<iframe id="upload_target" name="upload_target" style="display:none;width:0;height:0;border:0px solid #fff;"></iframe>
</form>
上传后添加了一些功能,例如:调整大小,Exif清理......上传图片需要所有这些功能。
解决方案
您可以通过这种方式上传多个文件
输入字段必须定义为一个数组,即
images[]
它应该被定义为
multiple="multiple"
<input name="images[]" type="file" multiple="multiple" /> // Count # of uploaded files in array $total = count($_FILES['images']['name']); // Loop through each file for( $i=0 ; $i < $total ; $i++ ) { //Get the temp file path $tmpFilePath = $_FILES['images']['tmp_name'][$i]; //Make sure we have a file path if ($tmpFilePath != ""){ //Setup our new file path $newFilePath = "./uploadFiles/" . $_FILES['images']['name'][$i]; //Upload the file into the temp dir if(move_uploaded_file($tmpFilePath, $newFilePath)) { //Handle other code here } } }
更多详情PHP 多重上传
推荐阅读
- android - 如何从 CSV 文件中读取数据并将数据插入房间数据库?
- xamarin - 我可以在 Xamarin Forms for Xaml 中设置一个重复的模板吗?
- javascript - 点击后查询注册失败
- python-3.x - 如何将地址处的内存设置为特定值?
- javascript - 'stream-array' 可读的不是异步可迭代的
- ios - 以编程方式(在 Swift 中)将 UINavigationController 嵌入 MapKit 以保存 UISearchController
- sql - 在 MVC 迁移中,我无法从一种解决方案更新数据库,但可以从另一种解决方案进行更新
- javascript - Vue 反应性:计算的更改数据但没有对其做出反应
- c++ - 自定义 Vector2D 类中的浮点错误
- javascript - Javascript 在悬停时查看该 div