上传

时间:2016-03-13 12:44:44

标签: php jquery ajax codeigniter

在我的社交网站中我有像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

你有什么建议

0 个答案:

没有答案