精华内容
下载资源
问答
  • java实现基本的图书存储功能,借阅功能,包括数据库使用 java实现基本的图书存储功能,借阅功能,包括数据库使用 java实现基本的图书存储功能,借阅功能,包括数据库使用
  • java实现数据库存储图片,设定禁止上传的文件(通过扩展名限制),禁止上传带有exe,bat
  • 在很多的网站都可以实现上传头像,可以选择自己喜欢的图片做头像,从本地上传,下次登录时可以直接显示出已经上传的头像,那么这个是如何实现的呢?   下面说一下我的实现过程(只是个人实现思路,实际网站怎...

    题外话:推荐一个专注于Java开发的网站,做提升学习,价值阅读:Java知音

    同时,扫码关注后端技术精选,回复“学习资料”,领取100套小程序源码+小程序开发视频和基本Java经典书籍电子版


    在很多的网站都可以实现上传头像,可以选择自己喜欢的图片做头像,从本地上传,下次登录时可以直接显示出已经上传的头像,那么这个是如何实现的呢?

     

    下面说一下我的实现过程(只是个人实现思路,实际网站怎么实现的不太清楚)

    实现的思路:

    工具:MySQL,eclipse

    首先,在MySQL中创建了两个表,一个t_user表,用来存放用户名,密码等个人信息,

    一个t_touxiang表,用来存放上传的图片在服务器中的存放路径,以及图片名字和用户ID,

    T_touxiang表中的用户ID对应了t_user中的id。

     

    t_user表SQL:

    DROP TABLE IF EXISTS `t_user`;
    CREATE TABLE `t_user` (
      `id` int(10) NOT NULL AUTO_INCREMENT,
      `username` varchar(20) NOT NULL,
      `password` varchar(255) NOT NULL,
      PRIMARY KEY (`id`),
      UNIQUE KEY `username` (`username`)
    ) ENGINE=InnoDB AUTO_INCREMENT=22 DEFAULT CHARSET=utf8;
    

     

    T_touxiang表SQL:

     

    DROP TABLE IF EXISTS `t_touxiang`;
    CREATE TABLE `t_touxiang` (
      `id` int(10) NOT NULL AUTO_INCREMENT,
      `image_path` varchar(255) DEFAULT NULL,
      `user_id` int(11) DEFAULT NULL,
      `old_name` varchar(255) DEFAULT NULL,
      PRIMARY KEY (`id`),
      KEY `img_user` (`user_id`),
      CONSTRAINT `img_user` FOREIGN KEY (`user_id`) REFERENCES `t_user` (`id`)
    ) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8;
    

     

    首先,写一个UploadServlet.java,用来处理图片文件的上传,并将图片路径,图片名称等信息存放到t_touxiang数据表中,代码如下:

     

    @WebServlet("/UploadServlet.do")
    public class UploadServlet extends HttpServlet {
        private static final long serialVersionUID = 1L;
    
        protected void service(HttpServletRequest request, HttpServletResponse response)
    	    throws ServletException, IOException {
    	// 判断上传表单是否为multipart/form-data类型
    	HttpSession session = request.getSession();
    	User user = (User) session.getAttribute("user"); // 在登录时将 User 对象放入了 会话
    							 // 中
    
    	if (ServletFileUpload.isMultipartContent(request)) {
    
    	    try {
    		// 1. 创建DiskFileItemFactory对象,设置缓冲区大小和临时文件目录
    		DiskFileItemFactory factory = new DiskFileItemFactory();
    		// System.out.println(System.getProperty("java.io.tmpdir"));//默认临时文件夹
    
    		// 2. 创建ServletFileUpload对象,并设置上传文件的大小限制。
    		ServletFileUpload sfu = new ServletFileUpload(factory);
    		sfu.setSizeMax(10 * 1024 * 1024);// 以byte为单位 不能超过10M 1024byte =
    						 // 1kb 1024kb=1M 1024M = 1G
    		sfu.setHeaderEncoding("utf-8");
    
    		// 3.
    		// 调用ServletFileUpload.parseRequest方法解析request对象,得到一个保存了所有上传内容的List对象。
    		@SuppressWarnings("unchecked")
    		List<FileItem> fileItemList = sfu.parseRequest(request);
    		Iterator<FileItem> fileItems = fileItemList.iterator();
    
    		// 4. 遍历list,每迭代一个FileItem对象,调用其isFormField方法判断是否是上传文件
    		while (fileItems.hasNext()) {
    		    FileItem fileItem = fileItems.next();
    		    // 普通表单元素
    		    if (fileItem.isFormField()) {
    			String name = fileItem.getFieldName();// name属性值
    			String value = fileItem.getString("utf-8");// name对应的value值
    
    			System.out.println(name + " = " + value);
    		    }
    		    // <input type="file">的上传文件的元素
    		    else {
    			String fileName = fileItem.getName();// 文件名称
    			System.out.println("原文件名:" + fileName);// Koala.jpg
    
    			String suffix = fileName.substring(fileName.lastIndexOf('.'));
    			System.out.println("扩展名:" + suffix);// .jpg
    
    			// 新文件名(唯一)
    			String newFileName = new Date().getTime() + suffix;
    			System.out.println("新文件名:" + newFileName);// image\1478509873038.jpg
    
    			// 5. 调用FileItem的write()方法,写入文件
    			File file = new File("D:/lindaProjects/mySpace/wendao/WebContent/touxiang/" + newFileName);
    			System.out.println(file.getAbsolutePath());
    			fileItem.write(file);
    
    			// 6. 调用FileItem的delete()方法,删除临时文件
    			fileItem.delete();
    
    			/*
    			 * 存储到数据库时注意 1.保存源文件名称 Koala.jpg 2.保存相对路径
    			 * image/1478509873038.jpg
    			 * 
    			 */
    			if (user != null) {
    			    int myid = user.getId();
    			    String SQL = "INSERT INTO t_touxiang(image_path,user_id,old_name)VALUES(?,?,?)";
    			    int rows = JdbcHelper.insert(SQL, false, "touxiang/" + newFileName, myid, fileName);
    			    if (rows > 0) {
    				session.setAttribute("image_name", fileName);
    				session.setAttribute("image_path", "touxiang/" + newFileName);
    				response.sendRedirect(request.getContextPath() + "/upImage.html");
    			    } else {
    
    			    }
    
    			} else {
    			    session.setAttribute("loginFail", "请登录");
    			    response.sendRedirect(request.getContextPath() + "/login.html");
    			}
    
    		    }
    		}
    
    	    } catch (FileUploadException e) {
    		e.printStackTrace();
    	    } catch (Exception e) {
    		e.printStackTrace();
    	    }
    
    	}
        }
    }
    

     

    在完成图片上传并写入数据库的同时,将图片路径通过session的方式发送到HTML界面

     

     

    <!DOCTYPE html>
    
    <html>
    
    <head>
    
    <meta charset="UTF-8">
    
    <title>更换头像</title>
    
    </head>
    
    <body>
    
             <formaction="UploadServlet.do" method="post"enctype="multipart/form-data">
    
                         本地目录:<inputtype="file" name="uploadFile">
    
               <img src="${image_path}" width="200" height="200">
    
                    <inputtype="submit" value="上传头像"/>
    
       </form>
    
    </body>
    
    </html>

     

    至此,图片上传数据库和本地服务器已经实现,那么如何在HTML界面显示出个人信息以及上传的头像呢?

     

     

    首先定义一个PersonServlet类,用来读取数据库的内容,并发送到HTML界面。

    代码如下:

    @WebServlet("/persons.do")
    public class PersonServlet extends HttpServlet {
    
        private static final long serialVersionUID = -800352785988546254L;
    
        protected void service(HttpServletRequest request, HttpServletResponse response)
    	    throws ServletException, IOException {
    	// 判断上传表单是否为multipart/form-data类型
    	Touxiang tx=null;
    	
    	HttpSession session = request.getSession();
    	User user = (User) session.getAttribute("user"); // 在登录时将 User 对象放入了 会话
    	if(user!=null){
    	    int myid=user.getId();
    	    String SQL="SELECT id,image_path,old_name FROM t_touxiang WHERE user_id=?";
    	    ResultSet rs=JdbcHelper.query(SQL,myid);
    	    String uSQL="SELECT username,password FROM t_user WHERE id=?";
    	    ResultSet urs=JdbcHelper.query(uSQL,myid);
    	    System.out.println( "我的个人id是: " + myid);
    	    final List<Touxiang> touxiang=new ArrayList<>();
    	    try {
    		if(rs.next())
    		{
    		    tx=new Touxiang();
    		    tx.setId(rs.getInt(1));
    		    tx.setImage_path(rs.getString(2));
    		    tx.setOld_name(rs.getString(3));
    		    touxiang.add(tx);
    		}
    		if(urs.next()){
    		    user.setUsername(urs.getString(1));
    		    user.setPassword(urs.getString(2));
    		    user.setTouxiang(touxiang);
    		}
    		
    	    } catch (SQLException e) {
    		// TODO Auto-generated catch block
    		e.printStackTrace();
    	    }
    	   
    		session.setAttribute("user", user);
    		System.out.println( "我的id: " + myid);
    		response.sendRedirect( request.getContextPath() + "/person.html");
    	}
        }
    }
    

     

    在HTML界面接收信息,并显示出来,代码如下:

     

    <div>
    	<form action="UploadServlet.do" method="post" enctype="multipart/form-data">
          		 <div><a href="$path/upImage.html">更换头像</a></div>
            	
            	#foreach( $ut in  $user.getTouxiang() )
            	 <img src=" $ut.getImage_path()"  width="200" height="200">
            	 #end
            	 <div>我的头像:</div>
            	 <div>我的姓名:$user.getUsername()</div>
            	 <div><a href="$path/myAnswer.do">我的解答</a></div>
    		<div><a href="$path/myQuestion.do">我的提问</a></div>
       	 </form>
    	</div>
    <div>
    	<form action="UploadServlet.do" method="post" enctype="multipart/form-data">
          		 <div><a href="$path/upImage.html">更换头像</a></div>
            	
            	#foreach( $ut in  $user.getTouxiang() )
            	 <img src=" $ut.getImage_path()"  width="200" height="200">
            	 #end
            	 <div>我的头像:</div>
            	 <div>我的姓名:$user.getUsername()</div>
            	 <div><a href="$path/myAnswer.do">我的解答</a></div>
    		<div><a href="$path/myQuestion.do">我的提问</a></div>
       	 </form>
    	</div>

     

    至此,一个基于Java的头像上传服务器,路径存储在MySQL,并在HTML界面读取出来的功能就基本实现了。头像上传之前进行处理等操作,可以选择一些插件来完成。这里只是简单的实现了基本功能。

     

     

    补充

    对于图片上传,这里只是简单的用Servlet实现了一下最基本的功能,仅提供思路。如果使用spring等框架,他都对图片上传做了很好的封装,应该更加容易。

    后台实现图片上传应该来说比较容易,但是比较头疼的是图片上传原生的按钮丑出天际,这里推荐俩实用的上传控件,应该算比较好看。

     

    1,H5实现的图片上传,可多张上传,可点击可拖拽上传,大概是这个样子:

    基本的使用介绍和下载地址:http://blog.csdn.net/weixin_36380516/article/details/70352689

     

    2,jQuery图像裁剪插件,大概长这样

     

    不仅提供上传,还有裁剪等功能,UI做的也美,

    地址:http://www.jq22.com/jquery-info318

     

    展开全文
  • java实现图片和缩略图存储到数据库中
  • 下面小编就为大家带来一篇java 实现链栈存储的方法。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
  • java实现图片文件存储到数据库

    万次阅读 热门讨论 2017-02-26 17:41:39
    2、编写图片数据流存储的工具类: public class ImageUtil { private static File file= null ; public static FileInputStream getImageByte (String infile) throws FileNotFoundException{ ...

    参见:http://www.cnblogs.com/kakag/p/3145140.html

    1、数据表:

    create table tb_file(
        -> fid SMALLINT AUTO_INCREMENT NOT NULL PRIMARY KEY,
        -> fname VARCHAR(50) NOT NULL,
        -> fcontent LONGBLOB NOT NULL );

    注意:这里fcontent使用longblob类型;Blob是一个可以存储二进制文件的容器。刚开始我使用的是blob类型,但是在上传一张431.27kb的图片时,程序报错“data is too long”,后来Google到这里:
    http://stackoverflow.com/questions/3503841/jpa-mysql-blob-returns-data-too-long
    发现
    TINYBLOB: maximum length of 255 bytes
    BLOB: maximum length of 65,535 bytes(63.99kb)
    MEDIUMBLOB: maximum length of 16,777,215 bytes(16383.99kb)
    LONGBLOB: maximum length of 4,294,967,295 bytes(4194303.99kb)
    所以当我使用blob时,最大容量只有64kb,所以在这里改为LONGBLOB类型

    2、编写图片数据流存储的工具类:

    public class ImageUtil {
        private static File file=null;
    
        public static FileInputStream getImageByte(String infile) throws FileNotFoundException{
            FileInputStream imageByte=null;
            file=new File(infile);
            imageByte=new FileInputStream(file);
            return imageByte;
        }
    }

    3、将本地文件保存到数据库,在我的F:\eclipse\workspace\uploadpic\pic文件夹中有一张照片fanfan.jpg

    public class UploadPic {
        private static final String  URL="jdbc:mysql://127.0.0.1:3306/uploadpic";
        private static final String USER="root";
        private static final String PASS="1234";
        public static void main(String[] args) throws SQLException, IOException {
            try {
                Class.forName("com.mysql.jdbc.Driver");
                Connection conn = (Connection) DriverManager.getConnection(URL,USER,PASS);
                InputStream in=ImageUtil.getImageByte("F://eclipse/workspace/uploadpic/pic/fanfan.jpg");
                String sql="insert into tb_file(fname,fcontent) values(?,?)";
                PreparedStatement ptmt=conn.prepareStatement(sql);
                ptmt.setString(1,"凡凡");
                ptmt.setBinaryStream(2, in,
                        in.available());
                ptmt.execute();
    
            } catch (ClassNotFoundException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
    
        }
    }

    执行之后,在数据库中有:
    这里写图片描述

    没错,宝宝的凡凡哈哈!

    展开全文
  • 主要给大家介绍了关于java实现图片的上传与展示的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
  • 如何用java实现图存储【邻接矩阵】首先得考虑的几条重要特性如何表示顶点如何表示边表示中的边有两种方法,邻接矩阵和邻接表。如何构造邻接矩阵如何把打印出来看看结果附上代码完结撒花 首先得考虑的几条...
  • java实现图片读取成base64字符串 ,将base64字符串存储图片。将图片转化为字符串以后,由于字符串更方便在网络上通过ajax传输、在网络web前台和后台间进行传输。import sun.misc.BASE64Decoder; import sun....
       
    

    全栈工程师开发手册 (作者:栾鹏)
    java教程全解

    java实现将图片读取成base64字符串 ,将base64字符串存储为图片。

    将图片转化为字符串以后,由于字符串更方便在网络上通过ajax传输、在网络web前台和后台间进行传输。

    需要rt.jar包,在java的安装目录中jre8\lib文件夹下存在这个包文件。

    需要引入如下代码

    import sun.misc.BASE64Decoder;  
    import sun.misc.BASE64Encoder;  
    

    图片转化成base64字符串

    public static String GetImageStr(String imgFile)  
        {//将图片文件转化为字节数组字符串,并对其进行Base64编码处理  
            InputStream in = null;  
            byte[] data = null;  
            //读取图片字节数组  
            try   
            {  
                in = new FileInputStream(imgFile);          
              
    展开全文
  • java实现图片固定长宽的缩放和裁剪

    千次阅读 2018-12-25 17:46:20
    java实现图片固定长宽的缩放和裁剪 实现对aa文件夹进行深层遍历并将图片按长600宽400进行缩放和裁剪 import java.awt.Color; import java.awt.Graphics2D; import java.awt.Image; import java.awt.geom....

    java实现图片固定长宽的缩放和裁剪

    实现对aa文件夹进行深层遍历并将图片按长600宽400进行缩放和裁剪

    import java.awt.Color;
    import java.awt.Graphics2D;
    import java.awt.Image;
    import java.awt.geom.AffineTransform;
    import java.awt.image.AffineTransformOp;
    import java.awt.image.BufferedImage;
    import java.io.File;
    import java.io.IOException;
    
    import javax.imageio.ImageIO;
    
    public class DeepSearchDir {
    
        /**
         * @param args
         */
        public static void main(String[] args) {
            File dir=new File("E:\\aa");
            listDir(dir,1);
        }
    
        private static void listDir(File dir,int level) {
        	String dirString=dir.toString();
            File files[]=dir.listFiles();
            level++;
            for(File f:files){
                if(f.isDirectory()){   	
                    listDir(f,level);       
                }
                else {           	
                    scale(f,""+f,400, 600, true);	
                }
            }
        }
    
        /**
         * 缩放图片方法
         * @param srcImageFile 要缩放的图片路径
         * @param result 缩放后的图片路径
         * @param height 目标高度像素
         * @param width  目标宽度像素  
         * @param bb     是否补白
         */
         public final static void scale(File srcImageFile, String result, int height, int width, boolean bb) {
                try {
                    double ratio = 0.0; // 缩放比例
                    File f =srcImageFile;
                    BufferedImage bi = ImageIO.read(f);
                    Image itemp = bi.getScaledInstance(width, height, bi.SCALE_SMOOTH);//bi.SCALE_SMOOTH  选择图像平滑度比缩放速度具有更高优先级的图像缩放算法。
                    // 计算比例
                   if ((bi.getHeight() > height) || (bi.getWidth() > width)) {
                       double   ratioHeight = (new Integer(height)).doubleValue()/ bi.getHeight();
                       double   ratioWhidth = (new Integer(width)).doubleValue()/ bi.getWidth();
                       if(ratioHeight>ratioWhidth){
                           ratio= ratioHeight;
                       }else{
                           ratio= ratioWhidth;
                       }
                        AffineTransformOp op = new AffineTransformOp(AffineTransform//仿射转换
                                .getScaleInstance(ratio, ratio), null);//返回表示剪切变换的变换
                        itemp = op.filter(bi, null);//转换源 BufferedImage 并将结果存储在目标 BufferedImage 中。
                    }
                    if (bb) {//补白
                       BufferedImage image = new BufferedImage(width, height,
                                BufferedImage.TYPE_INT_RGB);//构造一个类型为预定义图像类型之一的 BufferedImage。
                        Graphics2D g = image.createGraphics();//创建一个 Graphics2D,可以将它绘制到此 BufferedImage 中。
                        g.setColor(Color.white);//控制颜色
                        g.fillRect(0, 0, width, height);// 使用 Graphics2D 上下文的设置,填充 Shape 的内部区域。
                        if (width == itemp.getWidth(null))
                            g.drawImage(itemp, 0, (height - itemp.getHeight(null)) / 2,
                                    itemp.getWidth(null), itemp.getHeight(null),
                                    Color.white, null);
                        else
                            g.drawImage(itemp, (width - itemp.getWidth(null)) / 2, 0,
                                    itemp.getWidth(null), itemp.getHeight(null),
                                    Color.white, null);
                        g.dispose();
                        itemp = image;
                    }
                    System.out.println(result);
                    File outFile=new File(result);
                    if  (!outFile .exists() && !outFile .isDirectory())      
                    {    
                    	 outFile .mkdir();  
                        ImageIO.write((BufferedImage) itemp, "JPEG",outFile);   
                         
                    } else   
                    {   
                        ImageIO.write((BufferedImage) itemp, "JPEG",outFile);   
                    }  
                       //输出压缩图片
                    
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
          }
    
    展开全文
  • java实现图片验证码全套实现方式

    万次阅读 2016-05-05 10:36:29
    百度网盘demo提取地址: ... java引用的包 import java.io.IOException; import java.util.ArrayList; import java.util.List; import java.util.Random; import javax.servlet.http.HttpServ
  • 使用Java实现在SQLserver中实现图片存储 Connection conn = null; try{ DriverManager.registerDriver(new com.microsoft.jdbc.sqlserver.SQLServerDriv
  • 使用java实现oracle存储过程。 共有3个小例子。实现的功能 1、无返回值的存储过程 如 insert 2、有返回值的存储过程(非列表)select id from tab 3、返回列表 如:select * from tab 顺便鄙视下csdn,作为一个it...
  • java 实现的zip存储方式压缩测试代码
  • java实现将文件存储到数据库前言程序架构说明实现思路代码实现1.controller层主要代码2.Service层3.Dao层4.Mapper映射文件 前言 最近在工作中涉及到了一个将文件存储到mysql数据库中,实现文件存取操作的业务场景,...
  • Java实现蓝桥杯模拟存储转换.pdf
  • 主要介绍了Java 实现Redis存储复杂json格式数据并返回给前端操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
  • 主要介绍了java实现图的邻接表存储结构的两种方式及实例应用详解,邻接表构建是必须需要一个Graph对象,也就是对象!该对象包含属性有:顶点数、边数以及的顶点集合,需要的朋友可以参考下
  • 主要介绍了Java实现图片上传工具类,涉及java针对图片文件的检查、上传、清除等相关操作技巧,需要的朋友可以参考下
  • Java实现图片上传到服务器

    万次阅读 2019-03-06 09:30:15
    Java实现图片上传到服务器 #这几天研究图片上传到服务器并回显到页面遇到了问题,在这里总结一下!希望对各位有用!!! 先上代码 js代码 var formData = new FormData($( &amp;quot;#myform&amp;...
  • java实现图片裁剪

    千次阅读 2017-10-04 08:42:31
    java实现图片裁剪,输入起点x、y,宽度width、高度height测试代码 public static void main(String[] args) { //文件与BufferedImage间的转换 BufferedImage bi=file2img("test.jpg"); //读取图片
  • java 页面存储管理,分别为FIFO和LRU算法 还要描述20字。囧,汗
  • 存储库是用Java实现的各种程序和算法的开源实现的集合。 基本程序和竞争性程序代码都欢迎在这里做出贡献。 贡献 该存储库已打开,供您贡献。 让我们为其构建大量Java编程和算法代码的集合。 更多的贡献使其他人...
  • 相信大家都知道存储过程是在大型数据库系统中,一组为了完成特定功能的SQL语句集。存储过程是数据库中的一个重要对象,任何一个...Java调用mysql存储过程,实现如下,有需要的朋友们可以参考借鉴,下面来一起看看吧。
  • java实现图片上传功能,并返回图片保存路径

    万次阅读 多人点赞 2018-06-25 11:38:04
    alert("类型必须是图片(.png|jpg|bmp|gif|PNG|JPG|BMP|GIF)"); $(obj).val(''); return false; } var data = new FormData(); console.log(data); $.each($(obj)[0].files,function(i,file){ data.append('...
  • java实现 BLOB图片大文件在oracle中的存储和查找,采用MVC模型编写,很适合初学着对JDBC的学习,对熟悉java与oracle的连接很有帮助.
  • java实现七牛云图片文件的上传 七牛云:https://portal.qiniu.com/create#resource 首先需要去注册一个账号实现实名认证 之后打开七牛云的 我们需要先创建一个储存空间来给我们使用 这里的key也需要记录下来我们...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,138,878
精华内容 455,551
关键字:

java实现图的存储

java 订阅