app上传头像处理Java_java后台加安卓端实现头像上传功能
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后台加安卓端实现头像上传功能相关推荐
- 如何制作微信春节头像,分享手机、电脑端制作头像的方法
准备到春节了,新年新气象,很多朋友想给自己制作一个微信或者QQ的春节头像.但是微信/QQ里面又没有这个功能,那么我们应该怎么制作微信的春节头像呢?下面,给大家介绍一个非常好用.且非常简单的微信节日头像 ...
- 掌上考典-----自制的一款安卓版的掌上考试工具
近日,心血来潮,编制了一款安卓手机上运行的模拟考试程序(类似于驾校一点通),贴出来分享一下,不足之处,敬请批评指正! 1.图标: 2.主界面 如图所示: (1)顶部为标题栏,右侧点击显示菜单,包含&q ...
- css解决安卓端文字偏上的问题
第一种:要想文字垂直居中对齐,可使用flex布局(亲测有效) .btn{display:flex;align-items:center;justify-content::center;line-hei ...
- 若依前后端分离版源码分析-前端头像上传后传递到后台以及在服务器上存储和数据库存储设计
场景 使用若依前后端分离版本时,分析其头像上传机制. 可作为续参考学习. 注: 博客: https://blog.csdn.net/badao_liumang_qizhi 关注公众号 霸道的程序猿 获 ...
- html上传文件与后台处理,HTML加一般处理程序实现文件上传
HTML代码: 选择要上传的图片: 后台程序: using System; using System.Collections.Generic; using System.Linq; using Sys ...
- 关于注册页面上传头像并在后台处理数据
之前在做注册页面头像上传时,发现直接通过request.getParameter方法获取到的值全是null,后面经过查找资料找出了原因,因为在普通注册页面的基础上加入了上传头像的功能,所以需要在for ...
- element文件上传有文件但是后台接收为空_程序员提高篇:大规格文件(G)是如何做分片优化的?...
作者:凹凸实验室 链接:https://juejin.im/post/5ebb4346e51d451ef53793ad 整体思路 第一步是结合项目背景,调研比较优化的解决方案. 文件上传失败是老生常谈 ...
- android端向后台传图片,Android前台从后台下载一张图片 以及 Android前台上传一张图片到后台...
Android 与 服务器(这里我用的是JSP)对于图片的交互(Android --> JSP && JSP --> Android) Android,在写Android项 ...
- 电商生鲜网站开发(四)——后台开发:商品模块-图片上传/多条件拼接sql
电商生鲜网站开发(四)--后台开发:商品模块-图片上传/多条件拼接sql 增加商品 上传图片 更新商品 删除商品 批量上下架 图片上传功能 文件名UUID 通用唯一识别码(Universally Un ...
最新文章
- Android自定义控件_View的绘制流程
- 使用Linq时出现Row not found or changed. Linq 找不到行或行已更改的解决办法
- jquery修改样式通过类
- python逻辑运算的一些流程图_Python大牛历时一个月打造的Python系统学习流程图,超详细!...
- nyoj244 16进制的简单运算
- 一台电脑如何同开两个或多个飞信?
- 使用 T4 文本模板生成设计时代码
- mac下载安装adb环境
- android ios emoji兼容,web端怎么和移动端emoji表情兼容
- Mysql如何跨库查询数据?
- 三十、动名词短语 2
- tkinter中控件menu的两种组织方法
- 前端高效开发必备的 js 库
- 滑动轨迹 曲线 python_python——自动轨迹绘制
- #1752. 聂小倩
- java基础:日志框架
- linux-rootkit
- windows7蓝牙怎么打开_英特尔升级WiFi 和蓝牙驱动,Win10 更新5月版稳了
- vbs介绍与常见整人代码
- vue项目移动端禁止缩放 左右滑动
热门文章
- leetcode 501. 二叉搜索树中的众数(Java版)
- 操作系统:第二章 进程管理2 - 处理机调度
- 多线程与高并发(七):详解线程池 - 自定义线程池,JDK自带线程池,ForkJoin,源码解析等
- 【MVC模式】Front前端控制器模式、Jsp Model1 和 Jsp Model2、MVC思想
- 汇编语言 计算ffff:0006单元中的数乘以3,结果存在dx中
- C++ 算法设计 最大子序和问题
- Spring Boot devtool的使用
- Effective Java之考虑用序列化代理代理序列化实例(七十八)
- 数据结构(7)—— 排序总结
- 【题目解析】1015 Reversible Primes (20 分)_27行代码AC