【发布时间】:2014-03-18 07:03:20
【问题描述】:
我希望用户能够上传多张图片。有没有办法在数据库的一个字段下存储 3 张图像的路径?我的意思是让所有图像路径都在同一列中,就像这样
Images | date
images/file1.jpg, images/file2.jpg, images/file3.jpg | Thursday...
<ul id="image_upload">
<input type="file" name="image[]"><a href="#" id="add_more">Add more</a> <br>
[removed]
$(document).ready(function(){
$('#add_more').click(function(){
var current_count = $('input[type="file"]').length;
var next_count = current_count + 1;
$('#image_upload').append('<br><input type="file" name="image[' + next_count + ']"><br>');
});
});
</ul> <br><br>
然后我用php检查文件并尝试插入数据库
if (!empty($_FILES['image'])){
for ($i = 0; isset($_FILES['image']['name'][$i]); $i++) {
$allowed = array('jpg', 'jpeg', 'png', 'bmp', 'tiff', 'gif');
$fileName = $_FILES['image']['name'][$i];
$fileSize = $_FILES['image']['size'][$i];
$fileExt = strtolower(pathinfo($fileName, PATHINFO_EXTENSION));
if (!in_array($fileExt, $allowed)) {
$errors[] = 'Incorrect file type. Only allowed: ' . implode(', ', $allowed) . '';
}
if ($fileSize > 2097152) {
$errors[] = "$fileName exceeds the maximum file size of 2 MB";
}
}
for ($i = 0; isset($_FILES['image']['name'][$i]); $i++) {
$fileBase = basename($_FILES['image']['name'][$i]);
$fileName = pathinfo($fileBase, PATHINFO_FILENAME);
$fileExt = pathinfo($fileBase, PATHINFO_EXTENSION);
$fileTmp = $_FILES['image']['tmp_name'][$i];
$fileDst = 'images/images/'.basename($_FILES['image']['name'][$i]);
for ($j = 0; file_exists($fileDst); $j++) {
$fileDst = "images/images/$fileName-$j.$fileExt";
}
if (move_uploaded_file($fileTmp, $fileDst)) {
$output[$fileBase] = "Stored $fileBase OK";
}
}
}
此代码仅将第一张图像上传到临时文件夹,并且只有一个路径进入数据库
【问题讨论】:
-
使用 var_dump() 或 print_r() 了解您在 $_FILES 变量中的确切内容
-
逗号或管道分隔的值会为你做这件事..确保在你想使用它时解析它
-
move_uploaded_file($fileTmp, $fileDst)) ?
-
print_r($fileDst);只给我一个图像路径。
标签: php