多上传图像功能php?
您好,我想为我提供一个功能,使我能够在一次提交中上载多个图像。下面是我的代码结构:多上传图像功能php?,php,file-upload,Php,File Upload,您好,我想为我提供一个功能,使我能够在一次提交中上载多个图像。下面是我的代码结构: <form action="upload.php" method="post" enctype="multipart/form-data"> <p>Image1 :<input name="image1" type="file" /></p> <p>Image2 :<input name="image2" type="file" />
<form action="upload.php" method="post" enctype="multipart/form-data">
<p>Image1 :<input name="image1" type="file" /></p>
<p>Image2 :<input name="image2" type="file" /></p>
<p>Image3 :<input name="image3" type="file" /></p>
<input type="submit" value="Submit" />
</form>
include('configdb.php');
$uploadDir = 'upload/';
if(isset($_POST['submit']))
{
$fileName = $_FILES['image1']['name'];
$tmpName = $_FILES['image1']['tmp_name'];
$fileSize = $_FILES['image1']['size'];
$fileType = $_FILES['image1']['type'];
$image1path = $uploadDir . $fileName;
$result = move_uploaded_file($tmpName, "$image1path");
if (!$result) {
echo "Error uploading";
exit;
}
if(!get_magic_quotes_gpc())
{
$fileName = addslashes($fileName);
$image1 = addslashes($image1path);
}
$sql="INSERT INTO picture (image1, image2, image3) VALUES ('$image1','$image2', $image3)";
if (!mysql_query($sql,$con))
{
die('Error: ' . mysql_error());
}
}
图1:
图2:
图3:
包括('configdb.php');
$uploadDir='upload/';
如果(isset($_POST['submit']))
{
$fileName=$_文件['image1']['name'];
$tmpName=$\u文件['image1']['tmp\u名称'];
$fileSize=$_文件['image1']['size'];
$fileType=$_文件['image1']['type'];
$image1path=$uploadDir.$fileName;
$result=移动上传的文件($tmpName,$image1path”);
如果(!$result){
回显“上传错误”;
出口
}
如果(!get_magic_quotes_gpc())
{
$fileName=addslashes($fileName);
$image1=addslashes($image1path);
}
$sql=“插入图片(image1、image2、image3)值($image1’、$image2’、$image3)”;
if(!mysql_query($sql,$con))
{
die('Error:'.mysql_Error());
}
}
基本上,我上面的代码只上传一张图片,我怎样才能创建一个能够上传3张图片的函数。试试下面的方法:
...
$images = array();
foreach (array('image1', 'image2', 'image3') as $name) {
$images[$name] = new stdClass();
$images[$name]->fileName = $_FILES[$name]['name'];
$images[$name]->tmpName = $_FILES[$name]['tmp_name'];
$images[$name]->fileSize = $_FILES[$name]['size'];
$images[$name]->fileType = $_FILES[$name]['type'];
$images[$name]->path = $uploadDir . $images[$name]->fileName;
$result = move_uploaded_file($images[$name]->tmpName, $images[$name]->path);
if (!$result) {
echo "Error uploading";
exit;
}
$images[$name]->sql = mysql_real_escape_string($images[$name]->path);
}
$sql="INSERT INTO picture (image1, image2, image3) VALUES ({$images['image1']},{$images['image2']},{$images['image3']})";
...
<form action="upload.php" method="post" enctype="multipart/form-data">
<p>Image1 :<input name="image[]" type="file" /></p>
<p>Image2 :<input name="image[]" type="file" /></p>
<p>Image3 :<input name="image[]" type="file" /></p>
<input type="submit" name="submit" value="Submit" />
</form>
<?php
include('configdb.php');
$uploadDir = 'upload/';
if(isset($_POST['submit'])) {
$image = array();
foreach($_FILES['image']['name'] as $index => $name) {
if($_FILES['image']['error'][$index] == 4) {
continue;
}
if($_FILES['image']['error'][$index] == 0) {
$fileName = $_FILES['image']['name'][$index];
$tmpName = $_FILES['image']['tmp_name'][$index];
$fileSize = $_FILES['image']['size'][$index];
$fileType = $_FILES['image']['type'][$index];
if(($fileType == "image/gif" ||
$fileType == "image/jpeg" ||
$fileType == "image/pjpeg" ||
$fileType == "image/png" ||
$fileType == "image/x-png") &&
$fileSize < 500000) {
$imagePath = $uploadDir . $fileName;
$result = @move_uploaded_file($tmpName, $imagePath);
if (!$result) {
echo "Error uploading";
exit;
}
$image[] = $imagePath;
}
}
}
// Save images to database
$nbImage = count($image);
if($nbImage) {
$sql = "INSERT INTO picture (image1, image2, image3) VALUES (";
for($i=0; $i<$nbImage; $i++) {
if($i) $sql .= ",";
$sql .= "\"".$image[$i]."\"";
}
$sql .= ")";
@mysql_query($sql);
}
}
?>
下面是多次上传图片的代码。您可以上载3个以上的图像
<form action="upload.php" method="post" enctype="multipart/form-data">
<p>Image1 :<input name="image[]" type="file" /></p>
<p>Image2 :<input name="image[]" type="file" /></p>
<p>Image3 :<input name="image[]" type="file" /></p>
<input type="submit" name="submit" value="Submit" />
</form>
<?php
include('configdb.php');
$uploadDir = 'upload/';
if(isset($_POST['submit'])) {
$image = array();
foreach($_FILES['image']['name'] as $index => $name) {
if($_FILES['image']['error'][$index] == 4) {
continue;
}
if($_FILES['image']['error'][$index] == 0) {
$fileName = $_FILES['image']['name'][$index];
$tmpName = $_FILES['image']['tmp_name'][$index];
$fileSize = $_FILES['image']['size'][$index];
$fileType = $_FILES['image']['type'][$index];
if(($fileType == "image/gif" ||
$fileType == "image/jpeg" ||
$fileType == "image/pjpeg" ||
$fileType == "image/png" ||
$fileType == "image/x-png") &&
$fileSize < 500000) {
$imagePath = $uploadDir . $fileName;
$result = @move_uploaded_file($tmpName, $imagePath);
if (!$result) {
echo "Error uploading";
exit;
}
$image[] = $imagePath;
}
}
}
// Save images to database
$nbImage = count($image);
if($nbImage) {
$sql = "INSERT INTO picture (image1, image2, image3) VALUES (";
for($i=0; $i<$nbImage; $i++) {
if($i) $sql .= ",";
$sql .= "\"".$image[$i]."\"";
}
$sql .= ")";
@mysql_query($sql);
}
}
?>
图1:
图2:
图3:
注意:出于安全考虑,您应该在上传图像之前测试图像的类型和大小。
foreach($\u FILES as$name=>$file)
将是一个开始……您忽略了检查上传错误,并假设一切正常。糟糕的方式去。。。非常糟糕。@MarcB我会在测试上传3张图片后添加一个验证,效果很好:)如果你能帮我,我真的很感谢:)If($\u FILES['image1']['error']!==upload\u errr\u OK){…upload failed…}
@Petah,它必须是stdClass而不是stdObject@Petah我收到这个错误致命的错误:在C中找不到类'stdObject',当我注释掉/*$images[$name]=new stdObject()时;我在严格的标准下收到了这个错误:从空值创建默认对象。thanks@robert我更改了您所说的内容,收到错误:列计数与第1行的值计数不匹配,并且与sql语句中的这一行不匹配可捕获致命错误:类stdClass的对象无法转换为字符串inI测试您的代码,但它不起作用它说未查找照片,然后我将其替换为“image”,就像表单文件字段中的一样。但它不起作用:(我只是编辑了你的表单。你没有添加name=“submit”为什么它不起作用。:)我复制了你的代码,然后再试一次,但它也不起作用,它不能将图像保存在目录和数据库中。我已经对它进行了测试,效果很好。您应该检查您的权限上载目录。您还可以尝试打印错误以修复问题。