我有一个用于基本客户端配置文件的现有mySQL数据库。我需要为每条记录添加一张图片。
我有一个带有输入和textareas的表单来创建记录。我知道照片字段是blob,但如何在现有表单中创建上传?关于从哪里开始的任何建议?
jquery会让这更容易实现吗?
感谢。
埃里克
答案 0 :(得分:1)
我认为更好的方法是为每个配置文件上传图像,而不是使用mysql db中的blob来存储图像。您可以检查copy
或move_uploaded_file
php函数以上传文件。如果需要,您可以稍后调整图像大小。您必须将图标字段从blob更改为varchar。
感谢。
答案 1 :(得分:1)
我所做的是像一个名为用户的表格,其中包含一个名为image_id
的列,然后是另一个名为 images_users 的表格,其中包含{{1}列},id
和user_id
。我有一个PHP表单,用户可以上传他们的图像。表单将重命名文件名(例如:mypicture.jpg,但保留扩展名)到images_users表的下一行id。
file
确定表单中的文件扩展名,然后设置$getnewimageid = mysql_query("SELECT id FROM images_users ORDER BY id DESC LIMIT 1", $connection);
$rownewimageid = mysql_fetch_assoc($getnewimageid);
$new_image_id = $rownewimageid['id'];
$new_image_id = ($new_image_id + 1);
所以文件从mypicture.jpg重命名为$ new_image_id.jpg(例如:102.jpg);
(我知道这不是解释如何实际操作,我只想解释如何开始)
然后表单执行2次mysql查询来存储图像并将图像分配给用户
$new_image_file = "$new_image_id.$extension"
和
INSERT INTO images_users (id, user_id, file) VALUES ($new_image_id, $user_id, $new_file_name)
之后您可以轻松地为特定用户显示要显示的文件。用户甚至可以通过在images_users表中有多行来拥有多个图像,其中user_id =他们的用户ID。您可以通过
显示所有图像UPDATE users SET image_id = $new_image_id
等
答案 2 :(得分:0)
出于性能目的,我从未将照片作为blob上传到mySql。相反,我将图片的路径上传到mySql并使用上传类将图片上传到服务器(类似于此http://www.verot.net/php_class_upload.htm)。只需添加一个现有输入,在表单标记的末尾添加“enctype =”multipart / form-data“”(表单enctype =“multipart / form-data”method =“post”),实现该类,然后执行您的验证检查POST回来以确保用户添加了文件,以便它成功更新到数据库。
PHP:
if(isset($_POST['upload']))
{
include_once('class.upload.php');
if($_FILES['photo']['size'][0] != 0) //check to see if photo is empty{
//place existing code for data upload here but add photo filepath here
$handle = new Upload($file);
if ($handle->uploaded) { //if upload was successful
$handle->file_new_name_body = $file['name'];
$handle->Process("./photos/");
}
}
HTML:
<form name="form" id="form" action="form.php" enctype="multipart/form-data" method="post">
<input type="file" id="photo" name="photo" accept="gif|jpg|jpeg|png"/>
<button type="submit" class="button" name="upload" id="upload">Upload</button>
对于现有照片,只需将其个人资料图片作为default.png,然后将其引导至与上述相同的更新表单。应该工作得很好。