精华内容
下载资源
问答
  • 2020-07-04 10:25:25

    简介:

    上传图片功能想必大家都不陌生,几乎所有牵涉到用户的平台都会有上传头像等操作。今天我们就简单描述下新手如何快速上手。
    

    一、准备个小demo

    先看下图片上传工具类:
    
    /**
     * author : hyz
     * program : teddyLife
     * description : 图片上传工具类
     * date : 2020-06-24 16:11
     **/
    public class UploadImgaesUtil {
    
        /**
         * 文件上传
         * @param file 文件
         */
        public static Result<string> uploadFile(MultipartFile file, String path, String fileName) {
            Result<string> result = new Result&lt;&gt;();
    
    
            File dest = new File(path); //创建文件路径
    
            if (dest.exists()) {
                return result.set_message("文件已经存在").set_success(false);
            }
    
            if (!dest.getParentFile().exists()) { //判断文件父目录是否存在
                dest.getParentFile().mkdir();
            }
    
            String url;
    
            try {
    
                //上传文件
                file.transferTo(dest);
    
                //System.out.print("保存文件路径" + path + "\n");
                url = "/images/" + fileName; //本地运行项目  保存图片路径
    
            } catch (IOException e) {
                return result.set_message("上传失败").set_success(false);
            }
            return result.set_message(url).set_success(true).set_code(200);
        }
    
    }
    

    有了轮子要知道怎么推车呀:

    	@PostMapping("/image")
        public Result<String> findByUserid(@RequestParam("file") MultipartFile file,
                                           @RequestParam("id") Long id) {
    
            if (id == null){
                id = 0L;
            }
    
            Result<String> result = new Result<>();
    
            if (file.isEmpty()) {
                return result.set_message("上传文件不可为空");
            }
    
            //String fileName = file.getOriginalFilename(); // 获取文件名
    
            String fileName = new SimpleDateFormat("yyyyMMddHHmmss").format(new Date()) + "_" + id + ".jpg";
    
            String path = environment.getProperty("upload.filePath") + fileName; //加个时间戳,尽量避免文件名称重复
    
            System.out.print("保存文件绝对路径:" + path + "\n"); //文件绝对路径
    
            Result<String> bb = UploadImgaesUtil.uploadFile(file, path, fileName);
    
            System.out.println("上传成功,文件url==" + bb.get_message());
            // 更新用户信息
            if (bb.get_success() && bb.get_code() == 200){
                wxUserInfoService.saveUrl(id, "https://teddylife.xyz" + bb.get_message());
            }
    
            return bb;
        }
    
    • 很简单的一个图片上传操作就完成啦。当然啦此段代码没有牵扯太多的逻辑,没有根据时间去分文件夹之类的,如果你需要自己写下。
    • 感谢大家支持。这里都是一些能看得懂,用的上手的文章,没有说都是一些底层,所谓的干活文章。

    😁 作者:Teddy (公众号:鸡仓故事汇)
    ok!到这里就大功告成,小编(Teddy)在这里先感谢大家的到来。
    虽然不是太详细,小编已经很努力,给小编来个一键三连(点赞,关注,收藏),小编会越来越努力。。。

    更多相关内容
  • 在各大网站上都可以实现上传头像功能,可以选择自己喜欢的图片做头像,从本地上传,今天小编给大家分享Java实现图片上传到服务器上传的图片读取出来,需要的朋友参考下
  • java图片上传到服务器以及在服务器上图片修改删除,可以从前端获取图片后端接收然后保存,还可以修改图片修改之前会删除原来的图片。
  • 本文通过实例代码给大家介绍了java上传文件图片到指定服务器目录的相关知识,代码简单易懂,非常不错,具有一定的参考借鉴价值,需要的朋友可以参考下
  • 主要为大家详细介绍了Java实现图片上传服务器功能,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
  • 主要为大家详细介绍了Java上传文件图片到服务器的方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
  • Java如何将图片上传到服务器

    千次阅读 2021-03-04 02:15:14
    Java如何将图片上传到服务器发布时间:2020-11-10 17:28:18来源:亿速云阅读:96作者:Leah这篇文章将为大家详细讲解有关Java如何将图片上传到服务器,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读...

    Java如何将图片上传到服务器

    发布时间:2020-11-10 17:28:18

    来源:亿速云

    阅读:96

    作者:Leah

    这篇文章将为大家详细讲解有关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 fileItemList = sfu.parseRequest(request);

    Iterator 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);

    }

    // 的上传文件的元素

    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界面

    更换头像

    本地目录:

    %24%7Bimage_path%7D

    至此,图片上传数据库和本地服务器已经实现,那么如何在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=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界面接收信息,并显示出来,代码如下:

    #foreach( $ut in $user.getTouxiang() )

    %24ut.getImage_path()

    #end

    我的头像:
    我的姓名:$user.getUsername()

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

    关于Java如何将图片上传到服务器就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。

    展开全文
  • 主要为大家详细介绍了Android实现上传图片java服务器的方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
  • java实现上传图片到远程服务器

    千次阅读 2021-12-07 09:39:44
    这里的上传是在windows环境下的为了方便...这边的d:\英雄时刻就是图片准备上传的目录。 尝试访问ftp://192.168.18.132/是可以进来的。 接下来是代码实现 引入上传文件io等jar <dependency> <gro..

    这里使用vsftpd,上传是在windows环境下的为了方便这边用本机测试

    先安装vsftpwindows版本

    下载链接:vsftpd。提取码:yxlm

    f链接失效可以网上自行寻找,官方不提供windows版本。

    启动之后是这个样子配置好用户密码目录

     这边的d:\英雄时刻就是ftp可以访问上传的目录。

    尝试访问ftp://192.168.18.132/是可以进来的。

     接下来是代码实现

    引入上传文件io等jar

        <dependency>
                <groupId>commons-fileupload</groupId>
                <artifactId>commons-fileupload</artifactId>
                <version>1.3.2</version>
            </dependency>
            <dependency>
                <groupId>commons-io</groupId>
                <artifactId>commons-io</artifactId>
                <version>2.4</version>
            </dependency>
            <dependency>
                <groupId>commons-net</groupId>
                <artifactId>commons-net</artifactId>
                <version>3.3</version>
            </dependency>

    引入工具类

    注意这边ftp基础目录如果是linux则把整个目录路径写上windows不写配置的那个路径如d:...

    public class FtpUtil {
        /**
         * Description: 向FTP服务器上传文件
         * @param host FTP服务器ip
         * @param port FTP服务器端口
         * @param username FTP登录账号
         * @param password FTP登录密码
         * @param basePath FTP服务器基础目录,如/home/ftpuser/images
         * @param filePath FTP服务器文件存放路径。例如分日期存放:/2018/05/28。文件的路径为basePath+filePath
         * @param filename 上传到FTP服务器上的文件名
         * @param input 输入流
         * @return 成功返回true,否则返回false
         */
        public static boolean uploadFile(String host, int port, String username, String password, String basePath,
                                         String filePath, String filename, InputStream input) {
            boolean result = false;
            FTPClient ftp = new FTPClient();
            try {
                int reply;
                ftp.connect(host, port);// 连接FTP服务器
                // 如果采用默认端口,可以使用ftp.connect(host)的方式直接连接FTP服务器
                ftp.login(username, password);// 登录
                reply = ftp.getReplyCode();
                if (!FTPReply.isPositiveCompletion(reply)) {
                    ftp.disconnect();
                    return result;
                }
                //切换到上传目录
                if (!ftp.changeWorkingDirectory(basePath+filePath)) {
                    //如果目录不存在创建目录
                    String[] dirs = filePath.split("/");
                    //linux环境下需要把配置的前置目录填上
                    String tempPath = "/imges";
                    for (String dir : dirs) {
                        if (null == dir || "".equals(dir)) continue;
                        tempPath += "/" + dir;
                        if (!ftp.changeWorkingDirectory(tempPath)) {
                            if (!ftp.makeDirectory(tempPath)) {
                                return result;
                            } else {
                                ftp.changeWorkingDirectory(tempPath);
                            }
                        }
                    }
                }
                //设置为被动模式
                ftp.enterLocalPassiveMode();
                //设置上传文件的类型为二进制类型
                ftp.setFileType(FTP.BINARY_FILE_TYPE);
                //上传文件
                if (!ftp.storeFile(filename, input)) {
                    return result;
                }
                input.close();
                ftp.logout();
                result = true;
            } catch (IOException e) {
                e.printStackTrace();
            } finally {
                if (ftp.isConnected()) {
                    try {
                        ftp.disconnect();
                    } catch (IOException ioe) {
                    }
                }
            }
            return result;
        }
    }
    

    yml配置

    文件大小一定要配不然文件稍微大一点点就会报错

    #FTP配置
    FTP:
      ADDRESS: 192.168.18.132
      PORT: 21
      USERNAME: wxw
      PASSWORD: 159741
      BASEPATH: D:/英雄时刻
      URL: ftp://192.168.18.132/imges
    #文件上传大小配置
    spring:
      servlet:
        multipart:
          max-file-size: 100MB
          max-request-size: 100MB

    然后是controller测试接口

    @RestController
    public class FileContrller {
        @Value("${FTP.ADDRESS}")
        private String host;
        // 端口
        @Value("${FTP.PORT}")
        private int port;
        // ftp用户名
        @Value("${FTP.USERNAME}")
        private String userName;
        // ftp用户密码
        @Value("${FTP.PASSWORD}")
        private String passWord;
        // 文件在服务器端保存的主目录
        @Value("${FTP.BASEPATH}")
        private String basePath;
        // 访问图片时的基础url
        @Value("${FTP.URL}")
        private String baseUrl;
    
        @PostMapping("upload")
        @ResponseBody
        public String fileUpload(
                @RequestParam("files") MultipartFile[] uploadFile) {
            String filePaths= "";
            for (MultipartFile file : uploadFile) {
                try {
                    //1、给上传的图片生成新的文件名
                    //1.1获取原始文件名
                    String oldName = file.getOriginalFilename();
                    String  newName = UUID.randomUUID().toString() + oldName.substring(oldName.lastIndexOf("."));
                    //1.3生成文件在服务器端存储的子目录
                    SimpleDateFormat DateFormat = new SimpleDateFormat("/yyyy/MM/dd");
                    String filePath = DateFormat.format(new Date());
    
                    //3、把图片上传到图片服务器
                    //3.1获取上传的io流
                    InputStream input = file.getInputStream();
    
                    //3.2调用FtpUtil工具类进行上传
                    boolean result = FtpUtil.uploadFile(host, port, userName, passWord, basePath, filePath, newName, input);
    
                    if(result) {
                        if (Objects.equals("",filePaths)){
                            filePaths= baseUrl+filePath+"/"+newName;
                        }else {
                            filePaths+=";"+baseUrl+filePath+"/"+newName;
                        }
                    }else {
                        return "false";
                    }
                } catch (IOException e) {
                    return "false";
                }
            }
    
            return  filePaths;
    }

    测试访问上传2张图片

    成功访问!

    一般是需要配置代理用http访问

    展开全文
  • 主要为大家详细介绍了java实现上传网络图片微信临时素材,网络图片上传到微信服务器,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
  • 在很多的网站都可以实现上传头像,可以选择自己喜欢的图片做头像,从本地上传,下次登录时可以直接显示出已经上传的头像,那么这个是如何实现的呢?   下面说一下我的实现过程(只是个人实现思路,实际网站怎...

    题外话:推荐一个专注于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实现图片上传到服务器

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

    2019-10-24 03:30:18
    java上传文件到服务器,将本地的文件上传到服务器上去 java上传文件到服务器,将本地的文件上传到服务器上去
  • java分布式项目中,运用ftp客户端实现图片上传,nginx提供http服务实现图片回显
  • 主要介绍了 java 实现微信服务器下载图片到自己服务器的相关资料,需要的朋友可以参考下
  • 本测试服务主要是利用postman上传,后端接收图片保存至服务器,并且返回一个可以下载图片的URL路径
  • 通过base64上传图片到服务器并读取图片。上传的图片一般都会保存在服务器的某一个目录里面,这次的笔记则是对着图片的上传和读取的。
  • Java实现把图片上传到图片服务器(nginx+vsftp) 2018.07.09 22:53 1730浏览 前言: 在我另一篇笔记中已经记载了如何用nginx + vsftp搭建图片服务器(请参考nginx + vsftp搭建图片服务器),并且用vsftp的客户端工具...
  • Java通过图片URL把图片上传到本地服务器 ** 在工作中通常有这么个需求:跟第三方对接数据,第三方给的图片数据只有一个url链接,这就导致我们访问图片资源要一直请求第三方的资源。万一第三方做了限制或者删除,就...
  • Java上传图片到服务器

    2014-04-14 17:48:00
    Java上传图片到服务器 对于图片处理有两种: 一种是插入数据库;一种是上传到服务器上。
  • 安卓上传图片 java服务器。亲测试,可以用
  • 主要介绍了Java下载https文件并上传到阿里云oss服务器,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
  • JAVA上传图片到服务器 今天自己做项目,遇到一个图片上传的功能。一开始我以为很简单,只要前端input拿本地图片的地址后存数据库,然后再渲染出来就ok了,尝试后才发现真的是自己想多了hahaha。 上面的想法存在...
  • 百度控件ueditor图片上传到远程服务器解决方案 一、搭建ueditor环境 二、修改源码 三、重新编译源码 四、使用说明
  • 图片上传到java后台

    2016-01-20 14:27:25
    图片经过转码成base64字符串上传到服务器
  • 这两天在使用ftp上传图片时遇到了一个问题:图片上传以后需要移动文件夹。 我实现的思路大概是这样的: 1.先根据原图片路径找到对应的文件,拿文件流 InputStream inputStream = ftp.retrieveFileStream(new ...
  • 使用Java远程上传压缩包到服务器,或者在服务器上拉去压缩包或者文件,在服务器上创建目录。

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 88,320
精华内容 35,328
关键字:

java把图片上传到图片服务器

java 订阅
友情链接: superVCD.rar