个人中心模块-拍照剪裁上传

现在多数的网络应用都有个人中心的模块,里面少不了用户上传图像功能,正好最近项目里用到了这个就从网上找了一个集成进来,写得挺好的代码给大家推广一下。
废话不多说了,代码已经上传到网盘,有需要的朋友可以去下载来看看,这里处理一下上传的问题。

使用AsyncTask异步上传

private class RegHeadAsyncTask extends AsyncTask<String, Void, String> {

    protected void onPreExecute() {
    }

    protected BaseResponse doInBackground(String... params) {
        List<NameValuePair> postParams = new ArrayList<NameValuePair>();
        postParams.add(new BasicNameValuePair("uid", uid);
        postParams.add(new BasicNameValuePair("image", image));

        String response = null;
        try {
            String result = HttpClientUtil.uploadImg(HttpConfig.url_getHead(), postParams);
            if (TextUtils.isEmpty(result))
                return null;
            Gson gson = new Gson();
            // 解析上传图像操作,服务器返回的信息
            ...
        } catch (Exception e) {
            e.printStackTrace();
        }
        return response;
    }

    protected void onPostExecute(String result) {
        if (null != result) {
            // 服务器返回的信息
            ...
            if (flag) { // 上传成功
                ImageLoader.getInstance().displayImage(imageUrl, imageView); // 上传成功更新ui
            }
        }
    }
}

使用HTTP的POST方式提交(HttpClientUtil类)

public static String uploadImg(String url, List<NameValuePair> nameValuePairs) {
    BasicHttpParams httpParams = new BasicHttpParams();
    HttpConnectionParams.setConnectionTimeout(httpParams, 10 * 1000);
    HttpConnectionParams.setSoTimeout(httpParams, 10 * 1000);
    HttpClient httpClient = new DefaultHttpClient(httpParams);
    HttpPost httpPost = new HttpPost(url);
    String result = "";

    try {
        MultipartEntity entity = new MultipartEntity(HttpMultipartMode.BROWSER_COMPATIBLE);

        for (int index = 0; index < nameValuePairs.size(); index++) {
            if (nameValuePairs.get(index).getName().equalsIgnoreCase("image")) {
                entity.addPart(nameValuePairs.get(index).getName(), new FileBody(new File(nameValuePairs.get(index).getValue()), "image/*"));
            } else {
                entity.addPart(nameValuePairs.get(index).getName(), new StringBody(nameValuePairs.get(index).getValue()));
            }
        }

        httpPost.setEntity(entity);
        HttpResponse response = httpClient.execute(httpPost);

        if (response.getStatusLine().getStatusCode() == 200) {
            result = EntityUtils.toString(response.getEntity());
            return result;
        }
    } catch (IOException e) {
        e.printStackTrace();
    }
    return null;
}

图片上传PHP服务端(ThinkPhp)

// 图像上传
public function upimg()
{
    $uptypes = array(
    ‘image/jpg‘,
    ‘image/jpeg‘,
    ‘image/png‘,
    ‘imagepeg‘,
    ‘image/gif‘,
    ‘image/bmp‘,
    ‘image/x-png‘
    );
    $user_id=$_POST[‘uid‘];
    $file = $_FILES["image"];
    $fname = $_FILES["image"]["name"];
    $fname_array = explode(‘.‘,$fname);
    $extend = $fname_array[count($fname_array)-1];
    $MAX_FILE_SIZE = 1024000;
    $dest_folder = "./Uploads/avatar/";;
    if($extend!=""){
    if(!in_array($file["type"],$uptypes)){
        jsonerror("只能上传图片文件");
    }
    if($file["size"]>$MAX_FILE_SIZE){
        jsonerror("头像大小不能超过1M");
    }
    $uploadfile = $dest_folder.$user_id.‘.‘.jpg;
    if(move_uploaded_file($_FILES["image"]["tmp_name"],$uploadfile)){
        $user_info=M(‘Users‘);
        $data[‘HeadImg‘]=$uploadfile;
        $result=$user_info->where("Uid=$user_id")->save($data);
        if($result === FALSE){
            jsonerror("头像修改失败");
        }else{
            jsonsuccess("头像修改成功");
        }
    }else{
        jsonerror("图片上传失败");
    }
} 

// 处理头像上传数据
public function upimgs()
{
    // 判断是否上传会员卡
    if(!empty($_FILES[‘image‘][‘name‘])){
        $target_path  = "./Uploads/avatar/";//接收文件目录
        $filename     = $_FILES[‘image‘][‘name‘];  // 文件名称
        $exename      = $this->getExeName($filename); // 获取扩展名
        $filename     = $_POST[‘app_uid‘].‘.‘.jpg;  // 将文件重命名
        $target_path = $target_path.$filename;

        if(move_uploaded_file($_FILES[‘image‘][‘tmp_name‘],$target_path)){
            $user_id=$_POST[‘app_uid‘];
            $user_info=M(‘Users‘);
            $data[‘HeadImg‘]=$filename;
            $result=$user_info->where("Uid=$user_id")->save($data);
            if($result === FALSE){
                 jsonerror("头像修改失败");
            }else{
                jsonsuccess("头像修改成功!");
            }
        }else{
             jsonerror("上传图片有错误,请再试一次");
        }
    }
}

/**
* 获取文件扩展名
*/
public function getExeName($file)
{
    $arrName = explode(‘.‘,$file);
    return end($arrName);
}

附上拍照剪裁demo http://pan.baidu.com/s/1hqIfdS4
右侧带字母的联系人 http://pan.baidu.com/s/1tUKmM

时间: 2024-10-05 22:40:37

个人中心模块-拍照剪裁上传的相关文章

python模块paramiko的上传下载和远程执行命令

#!/usr/bin/python # -*- coding: utf-8 -*- import paramiko,os,datetime server_ip = '192.168.1.123' server_user = 'root' server_passwd = '10241010' server_port = 22 #local_dir='C:\Python27' #remote_dir='/soft2/nba/' def ssh_connect(): ssh = paramiko.SS

【p2】&#183;python中嵌套列表list元素输出&#183;模块封装&#183;发布上传(pigeon详细说)

如果你也正在学习<Head First Python>,可以相互学习.接下来将记录如何完成书本的这一章以及遇到的问题如何解决. 一.简单访问列表数据 [1]通过位置访问具体数据,0表示第一位[如下图] [2]计算列表长度[使用len] [3]列表末尾增加--删除元素,append增肌,pop删除,注意不同用法 append括号里放想添加元素,列表.pop()就能删除 [4]extend添加多个元素[如想在后面添加5,6,7],留意跟append区别 append保留着数据项中括号,缺陷 ---

android选择图片或拍照图片上传到服务器(包括上传参数)

From:http://blog.csdn.net/springsky_/article/details/8213898具体上传代码: 1.选择图片和上传界面,包括上传完成和异常的回调监听 [java] view plaincopy package com.spring.sky.image.upload; import java.util.HashMap; import java.util.Map; import android.app.Activity; import android.app.

python网络编程socket模块实现ftp上传下载

本实验实现ftp上传文件下载文件功能,并具有校验文件完整性,打印进度条功能, 主要练习socket,struct模块. ftp用户文件存放在user.json文件中 user.json文件内容 {"lisi": "abcdef", "hyh": "123456"} ftp客户端脚本ftpclient.py #!/usr/bin/python # --*-- coding: utf-8 --*-- import socket i

hybird app项目实例:安卓webview中HTML5拍照图片上传

应用的平台环境:安卓webview: 涉及的技术点: (1) <input type="file" > :在开发中,安卓webview默认点击无法调用文件选择与相机拍照(其他的设备ios等浏览器没有此问题),需要让安卓开发同学在代码调整即可: (2) 点击选择图片后如何展示在页面上呢?很多开发人员估计是直接获取 this.value,这是错误的,不可行.有2个API可以现实,new FileReader与window.URL.createObjectURL(最优): new

网站用户头像剪裁上传完整案例

做为网站前段开发人员来说,用户头像剪裁和上传是一个很常用的功能,一般这个功能涉及到图片的放大,缩小,移动,旋转,和剪裁.下面我们来做一个完整的demo,剪裁后的图片以base64的形式返回,base64怎么上传到后台服务器,很简单,这里不做介绍. 图片的操作:手机端操作和其他手机图片应用操作没有任何区别. PC端:通过鼠标的滚轮是实现图片的放大缩小,长按左键移动鼠标实现图片的移动,双击图片现实图片的旋转. demo下载地址:下载1 下载2 在这个demo中,我们使用Jquery的插件(jquer

Hbuilder mui 相册拍照图片上传

http://www.bcty365.com/content-146-3648-1.html 使用流程 弹出actionSheet /*点击头像触发*/ document.getElementById('headImage').addEventListener('tap', function() { if (mui.os.plus) { var a = [{ title: "拍照" }, { title: "从手机相册选择" }]; plus.nativeUI.ac

PC端 H5实现拍照并上传

<!DOCTYPE HTML><html><head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1, minimum-scale=1, maximum-scale=1, user-scalable=no" /> <meta name="a

selectors 模块完成文件上传下载功能

1 ############ server端 2 3 import selectors,socket,time,pickle,os,struct 4 ip_port = ('192.168.43.182',8080) 5 buffer_size = 1024 6 back_log = 5 7 BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) 8 9 class SelectorsServer: 10 de