我一直在尝试将多个文件上传到文件夹中,并将名称保存在数据库表中。这是代码:我需要获取这些上传文件的名称。我知道我的代码是废话:(
有没有办法循环上传这些文件并仍然返回文件名? 我需要这些名称才能将它们插入到mysql表中。
感谢您的协助。
<form action="file-upload.php" method="post" enctype="multipart/form-data">
Send these files:<br />
<input name="pic1" type="file" /><br />
<input name="pic2" type="file" /><br />
<input name="pic3" type="file" /><br />
<input name="pic4" type="file" /><br />
<input type="submit" value="Send files" />
</form>
PHP脚本如下:
<?php
$target = "uploads/";
$target = $target . basename( $_FILES['pic1']['name']);
$target = $target . basename( $_FILES['pic2']['name']);
$target = $target . basename( $_FILES['pic3']['name']);
$target = $target . basename( $_FILES['pic4']['name']);
$pic1 =($_FILES['pic1']['name']);
$pic2 =($_FILES['pic2']['name']);
$pic3 =($_FILES['pic3']['name']);
$pic4 =($_FILES['pic4']['name']);
$con = mysql_connect("localhost", "root", "");
if (!$con){
die('Could not connect: ' . mysql_error());
}
mysql_select_db("people", $con);
$sql="INSERT INTO mtpupload (name, age, pic1, pic2, pic3, pic4 )
VALUES('$_POST[name]','$_POST[age]','$pic1', '$pic2', '$pic3', '$pic4')";
//---------Here, I want to insert all the pictures----------//
if(move_uploaded_file($_FILES['pic1']['tmp_name'], $target)) {
//do nothing
}
if(move_uploaded_file($_FILES['pic2']['tmp_name'], $target)) {
//do nothingelse{
}if(move_uploaded_file($_FILES['pic3']['tmp_name'], $target)) {
//do nothing echo "Sorry, the image was not moved from temp folder.";
}if(move_uploaded_file($_FILES['pic4']['tmp_name'], $target)) {
//do nothing
echo "The was a problem uploading one of your images.";
}
//--------------Ends here---------------------//
if (!mysql_query($sql,$con)){
die('Error: ' . mysql_error());
}
echo "1 record added";
mysql_close($con)
?>
更新:结果证明此代码正常运行但只保存了一个图像。我认为我的move_uploaded_file是错误的。有什么指针吗?
再次感谢您的帮助。
答案 0 :(得分:1)
使用array
文件字段名称和foreach
时,这可能会有所帮助:
$fields = array('pic1', 'pic2', 'pic3', 'pic4');
$fileNames = array();
foreach($fields as $field)
{
$file = $_FILES[$field];
# you can now process each file on it's own.
$fileNames[$field] = $file['name']; # store all names into an array
...
}
答案 1 :(得分:1)
感谢大家的建议,我终于明白了。我在很多地方使用$ target变量。将其重命名为不同的变量有帮助。
答案 2 :(得分:0)
这个怎么样:
foreach ($_FILES as $file) {
echo $file['name']; // File name of file on user's computer
echo $file['tmp_name']; // Full path to the file on the server
}