1、手机上传压缩后的图片到服务器

2、后台接收到图片进行图片重命名、保存

后台代码

package service;

import java.io.File;

import java.io.IOException;

import java.util.List;

import javax.servlet.Servlet;

import javax.servlet.ServletException;

import javax.servlet.annotation.WebServlet;

import javax.servlet.http.HttpServlet;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

import org.apache.commons.fileupload.FileItem;

import org.apache.commons.fileupload.FileUploadException;

import org.apache.commons.fileupload.disk.DiskFileItemFactory;

import org.apache.commons.fileupload.servlet.ServletFileUpload;

import bean.UpdateHeadBean;

import net.sf.json.JSONObject;

import utils.DbUtil;

@WebServlet("/UpdateHead")

public class UpdateHead extends HttpServlet implements Servlet{

private static final long serialVersionUID = 1L;

public UpdateHead() {

super();

}

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws

ServletException, IOException {

this.doPost(request, response);

response.getWriter().append("Served at: ").append(request.getContextPath());

}

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException,

IOException {

response.setCharacterEncoding("UTF-8");

DiskFileItemFactory factory = new DiskFileItemFactory();

ServletFileUpload upload = new ServletFileUpload(factory);

List items;

UpdateHeadBean updateHeadBean = new UpdateHeadBean();

try {

int uId = 0;

String pic =null;

String headName = null;

items = upload.parseRequest(request);//参数是HttpServletRequest对象

for (FileItem item : items){//遍历所有客户端提交的参数(包括文件域)

if(item.isFormField()){

if("uPic".equals(item.getFieldName())){//获取手机端传的参数(用户id)

uId=Integer.valueOf(item.getString());

pic = DbUtil.queryPic(uId);

System.out.println("value:"+item.getString());

}

}else{

String key = item.getFieldName();//取出文件域的键

String value = item.getName();//取出文件域的值

long fileLen = item.getSize();//取出上传文件的尺寸

String mimeType = item.getContentType();//取出上传文件的类型

File f=new File("D:\\test\\");//文件地址(上传后服务器硬盘地址)

f.mkdirs();

headName = System.currentTimeMillis()+value.substring(value.indexOf("."),value.length());

//保存图片到服务器

item.write(new File(f+"\\"+headName));//保存上传的文件到服务器本地

System.out.println("value:"+headName);

}

updateHeadBean.setStatus(0);

updateHeadBean.setMsg("上传成功");

}

//根据用户id保存图片名称到数据库

DbUtil.saveHead(headName, uId);

//删除原来的图片文件

if(pic!=null&&pic!="1520848305600.jpg"){

File file = new File("d:\\test\\"+pic);

try {

if (file.exists()) {// 上面文件创建,已存在就删除

boolean d = file.delete();

}

} catch (Exception e) {

e.printStackTrace();

}

}

} catch (Exception e) {

updateHeadBean.setStatus(1);

updateHeadBean.setMsg("上传失败");

e.printStackTrace();

}

//实体类转为json字符串返回给客户端

JSONObject msg = JSONObject.fromObject(updateHeadBean);

response.getWriter().write(msg.toString());

}

}

数据库操作类

package utils;

import java.sql.Connection;

import java.sql.PreparedStatement;

import java.sql.ResultSet;

import java.sql.SQLException;

import java.sql.Statement;

import bean.Student;

public class DbUtil {

/*

* 保存数据

*/

public static Object saveData(String name,int age,String pss){

Connection connection = null;

PreparedStatement preparedStatement = null;

ResultSet rs = null;

Object retId = null;

try{

// 获取连接

connection = JdbcUtils.getConnection();

// 准备sql语句

String sql = "INSERT INTO students(name,age,pss) VALUES(?,?,?)";

// 获取PrepareStatement对象

preparedStatement = connection.prepareStatement(sql,Statement.RETURN_GENERATED_KEYS);

// 填充占位符

preparedStatement.setString(1, name);

preparedStatement.setInt(2, age);

preparedStatement.setString(3, pss);

// 执行sql

preparedStatement.executeUpdate();

rs = preparedStatement.getGeneratedKeys();

if (rs.next()){

retId = rs.getObject(1);}

return retId;

}catch(SQLException  e){

e.printStackTrace();

return null;

}finally{

JdbcUtils.releaseDB(connection, preparedStatement, null);

}

}

/*

* 查询数据

*/

public static String queryData(String name){

Connection connection = null;

ResultSet rs = null;

try{

// 获取连接

connection = JdbcUtils.getConnection();

Statement statement = connection.createStatement();

rs=statement.executeQuery("select * from students where name='"+name+"'");

if(rs.next()){

String userName = rs.getString("name");

return "注册成功!";

}

}catch(SQLException  e){

e.printStackTrace();

return "错误!";

}

finally{

try {

connection.close();

rs.close();

} catch (SQLException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

return "错误!";

}

/*

* 查询数据

*/

public static String queryPic(int id){

Connection connection = null;

ResultSet rs = null;

try{

// 获取连接

connection = JdbcUtils.getConnection();

Statement statement = connection.createStatement();

rs=statement.executeQuery("select * from students where id='"+id+"'");

if(rs.next()){

String pic = rs.getString("pic");

return pic;

}

}catch(SQLException  e){

e.printStackTrace();

return null;

}

finally{

try {

connection.close();

rs.close();

} catch (SQLException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

return null;

}

public static Object queryData(String name,String pss,boolean flag){

Connection connection = null;

ResultSet rs = null;

try{

// 获取连接

connection = JdbcUtils.getConnection();

Statement statement = connection.createStatement();

rs=statement.executeQuery("select * from students where name='"+name+"'and pss ='"+pss+"'");

if(rs.next()){

Object msg;

if(flag){

msg = rs.getInt("id");

}else{

msg = rs.getString("pic");

}

return msg;

}

}catch(SQLException  e){

e.printStackTrace();

return null;

}

finally{

try {

connection.close();

rs.close();

} catch (SQLException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

return null;

}

/**

* 保存上传的头像

*/

public static boolean saveHead(String picName,int id){

Connection connection = null;

PreparedStatement preparedStatement = null;

try{

// 获取连接

connection = JdbcUtils.getConnection();

// 准备sql语句  UPDATE Person SET FirstName = 'Fred' WHERE LastName = 'Wilson'

String sql = "update students set pic=? where id='"+id+"'";

// 获取PrepareStatement对象

preparedStatement = connection.prepareStatement(sql,Statement.RETURN_GENERATED_KEYS);

// 填充占位符

preparedStatement.setString(1, picName);

// 执行sql

preparedStatement.execute();

return true;

}catch(SQLException  e){

e.printStackTrace();

return false;

}finally{

JdbcUtils.releaseDB(connection, preparedStatement, null);

}

}

}

3、使用tomcat映射图片地址

打开Tomcat安装文件夹——>conf——>Catalina——>localhost

创建xml文件 pic.xml (文件名必须与Context path的值一致),docBase与workDir的值为图片所在文件夹,配置好后可在浏览器通过192.168.0.101:8080/pic/文件名 访问图片(192.168.0.101:8080为本机ip与tomcat端口号)

docBase="D:/test"

workDir="D:/test"

debug="0"

reloadable="true"

crossContext="true" />

app上传头像处理Java_java后台加安卓端实现头像上传功能相关推荐

  1. 如何制作微信春节头像,分享手机、电脑端制作头像的方法

    准备到春节了,新年新气象,很多朋友想给自己制作一个微信或者QQ的春节头像.但是微信/QQ里面又没有这个功能,那么我们应该怎么制作微信的春节头像呢?下面,给大家介绍一个非常好用.且非常简单的微信节日头像 ...

  2. 掌上考典-----自制的一款安卓版的掌上考试工具

    近日,心血来潮,编制了一款安卓手机上运行的模拟考试程序(类似于驾校一点通),贴出来分享一下,不足之处,敬请批评指正! 1.图标: 2.主界面 如图所示: (1)顶部为标题栏,右侧点击显示菜单,包含&q ...

  3. css解决安卓端文字偏上的问题

    第一种:要想文字垂直居中对齐,可使用flex布局(亲测有效) .btn{display:flex;align-items:center;justify-content::center;line-hei ...

  4. 若依前后端分离版源码分析-前端头像上传后传递到后台以及在服务器上存储和数据库存储设计

    场景 使用若依前后端分离版本时,分析其头像上传机制. 可作为续参考学习. 注: 博客: https://blog.csdn.net/badao_liumang_qizhi 关注公众号 霸道的程序猿 获 ...

  5. html上传文件与后台处理,HTML加一般处理程序实现文件上传

    HTML代码: 选择要上传的图片: 后台程序: using System; using System.Collections.Generic; using System.Linq; using Sys ...

  6. 关于注册页面上传头像并在后台处理数据

    之前在做注册页面头像上传时,发现直接通过request.getParameter方法获取到的值全是null,后面经过查找资料找出了原因,因为在普通注册页面的基础上加入了上传头像的功能,所以需要在for ...

  7. element文件上传有文件但是后台接收为空_程序员提高篇:大规格文件(G)是如何做分片优化的?...

    作者:凹凸实验室 链接:https://juejin.im/post/5ebb4346e51d451ef53793ad 整体思路 第一步是结合项目背景,调研比较优化的解决方案. 文件上传失败是老生常谈 ...

  8. android端向后台传图片,Android前台从后台下载一张图片 以及 Android前台上传一张图片到后台...

    Android 与 服务器(这里我用的是JSP)对于图片的交互(Android --> JSP && JSP --> Android) Android,在写Android项 ...

  9. 电商生鲜网站开发(四)——后台开发:商品模块-图片上传/多条件拼接sql

    电商生鲜网站开发(四)--后台开发:商品模块-图片上传/多条件拼接sql 增加商品 上传图片 更新商品 删除商品 批量上下架 图片上传功能 文件名UUID 通用唯一识别码(Universally Un ...

最新文章

  1. Android自定义控件_View的绘制流程
  2. 使用Linq时出现Row not found or changed. Linq 找不到行或行已更改的解决办法
  3. jquery修改样式通过类
  4. python逻辑运算的一些流程图_Python大牛历时一个月打造的Python系统学习流程图,超详细!...
  5. nyoj244 16进制的简单运算
  6. 一台电脑如何同开两个或多个飞信?
  7. 使用 T4 文本模板生成设计时代码
  8. mac下载安装adb环境
  9. android ios emoji兼容,web端怎么和移动端emoji表情兼容
  10. Mysql如何跨库查询数据?
  11. 三十、动名词短语 2
  12. tkinter中控件menu的两种组织方法
  13. 前端高效开发必备的 js 库
  14. 滑动轨迹 曲线 python_python——自动轨迹绘制
  15. #1752. 聂小倩
  16. java基础:日志框架
  17. linux-rootkit
  18. windows7蓝牙怎么打开_英特尔升级WiFi 和蓝牙驱动,Win10 更新5月版稳了
  19. vbs介绍与常见整人代码
  20. vue项目移动端禁止缩放 左右滑动

热门文章

  1. leetcode 501. 二叉搜索树中的众数(Java版)
  2. 操作系统:第二章 进程管理2 - 处理机调度
  3. 多线程与高并发(七):详解线程池 - 自定义线程池,JDK自带线程池,ForkJoin,源码解析等
  4. 【MVC模式】Front前端控制器模式、Jsp Model1 和 Jsp Model2、MVC思想
  5. 汇编语言 计算ffff:0006单元中的数乘以3,结果存在dx中
  6. C++ 算法设计 最大子序和问题
  7. Spring Boot devtool的使用
  8. Effective Java之考虑用序列化代理代理序列化实例(七十八)
  9. 数据结构(7)—— 排序总结
  10. 【题目解析】1015 Reversible Primes (20 分)_27行代码AC