【发布时间】:2011-07-07 16:21:24
【问题描述】:
我创建了一个表单,允许用户将多个文件上传到一个目录。现在我正在尝试从表单输入字段中获取文件的名称并将它们存储到数据库中。
我正在尝试获取输入字段的数组值,即; ['file']['name'] 和 ['file']['tmp_name'] 并将它们插入数据库。使用下面的代码,我只设法将“数组”这个词插入到数据库中,而不是文件本身的实际名称。
我认为我需要使用 foreach 循环遍历数组,但我不确定如何编写它以及将它插入到我的代码中的何处。以下是目前为止的代码:
#connect to the database
mysql_connect("localhost", "root", "");
mysql_select_db("masscic");
//Upload Handler to check image types
function is_image($file) {
$file_types = array('jpeg', 'gif', 'bmp'); //acceptable file types
if ($img = getimagesize($file)){
//echo '<pre>';
//print_r($_FILES); //will return an array of information for testing
//print_r($img); //will return an array of information for testing
if(in_array(str_replace('image/', '', $img['mime']), $file_types))
return $img;
}
return false;
}
//form submission handling
if(isset($_POST['submit'])) {
//file variables
$fname = $_FILES['files']['name'];
$ftype = $_FILES['files']['type'];
$fsize = $_FILES['files']['size'];
$tname = $_FILES['files']['tmp_name'];
$ferror = $_FILES['files']['error'];
$newDir = '../uploads/'; //relative to where this script file resides
for ($i = count($fname) -1; $i >=0; $i--) {
if ($ferror[$i] =='UPLOAD ERR OK' || $ferror[$i] ==0)
{
if(is_image($tname[$i]))
{
move_uploaded_file($tname[$i], ($newDir.time().$fname[$i]));
echo '<li><span class="success">'.$fname[$i].' -- image has been accepted<br></span></li>';
}else
echo '<li><span class="error">'.$fname[$i].' -- is not an accepted file type<br></span></li>';
}
}
}
$sqlInsert = mysql_query("INSERT INTO files (file_names) VALUES('$fname')") or die (mysql_error());
感谢您的帮助。
【问题讨论】: