在我的社交网站中我有像fb用户这样的选项可以更改个人资料图片。当用户点击个人资料图片时,会打开新的模态窗口,用户可以选择现有图像在个人资料上设置或上传新图像。上传新照片是通过form inptu[file]
完成的,我用ajax发送请求。我使用Codeigniter fw这个应用程序。图像成功上传到目录并存储在数据库中。我的问题是bcs我不知道如何自动将新上传的照片设置为个人资料照片。在users
表中,cell
名为porfile_picture
,其中我存储用户选择的图片id
。在配置文件上设置新图片我使用UPDATE
sql查询,用new更改现有图片ID。
上传新图片的模型:
public function create($data = array())
{
$this->db->insert($this->_table, $data);
}
在控制器中我有来自ci doc的标准方法如何上传图片
public function uploadProfilePicture()
{
// image lib settings and validations
$photo_data = array(
'owner_id' => $this->_accountID,
'album_id' => 5, // profilne slike album
'photo_name' => $data['upload_data']['file_name'],
'photo_ext' => $data['upload_data']['file_ext'],
'photo_size' => $data['upload_data']['file_size'],
'photo_type' => $data['upload_data']['image_type'],
'date_uploaded' => date('Y-m-d H:i:s'),
'date_midified' => date('Y-m-d H:i:s'),
'photo_guid' => $guid
);
//debug_view($data);
$this->photo->create($photo_data);
}
public function setProfilePicture($picture_id = 0)
{
$this->account->edit($this->_accountID, array(
'profile_picture' => $picture_id,
));
redirect('profile');
}
通过ajax上传:
// Upload picture
$("#upload_profile_image").on('submit', function(e) {
var picture = $(".profile_picture").val();
$(".loader-wrapper").show();
$.ajax({
type: 'POST',
data: new FormData(this),
contentType: false,
cache: false,
processData:false,
url: baseurl + '/photo/uploadProfilePicture',
success: function(data, textStatus, jqXHR) {
$(".loader-wrapper").hide();
console.log(data);
},
error: function(jqXHR, textStatus, errorThrown){
alert(jqXHR.responseText);
}
});
});
这个上传工作现在只完善了我需要知道如何将上传的图像设置为prifile。我需要在数据库中再发送一个查询来更新profile_picture
。
你有什么建议