精华内容
参与话题
问答
  • JAVA实现上传图片实例(上传头像) JAVA实现上传图片实例(上传头像)
  • JAVA实现网页上传头像

    2019-09-30 08:15:06
    大概实现就是在页面嵌入一个file类型的input控件,并且将之隐藏,点击上传传递到这个控件上面,选择文件,将图片以base64的方式传递到后台,后台解码器解码,保存图片,并且把图片名字保存到数据库或者直接把图片...

    大概实现就是在页面嵌入一个file类型的input控件,并且将之隐藏,点击上传传递到这个控件上面,选择文件,将图片以base64的方式传递到后台,后台解码器解码,保存图片,并且把图片名字保存到数据库或者直接把图片转为byte数组存到数据库,数据库接收类型为binary。

    这里我就介绍第一种办法将图片保存到本地的方式。

    1.前台input控件的代码,这里设置accept表示只接受图片类型的文件。

     <input type="file" name="fileToUpload" id="fileToUpload" onchange="openFile(event)" style="display:none;" accept="image/*">
      </form>

    2.onchange方法则为选择文件时候触发的方法。正常流程应该是不触发onchange方法,而是选择了图片的时候,应该有个上传按钮,在执行相关事件,我这里的做法其实就是选择了图片就会进行上传,这里可以根据个人的需求进行修改。js中onchange所执行的方法。将图片转换为base64编码,利用Ajax传到后台。

    var openFile = function (event) {  
        var input = event.target;  
        var reader = new FileReader();  
        reader.onload = function () {  
            var database64 = getBase64Image(reader.result);  
            $.ajax({  
                url: "user/updateheadimg.do",  
                type: "POST",  
                data: { "imgdatabase": database64,"userid":$("#loginuserid").html()},  
                success: function (data) {  
                    $("#headpng").html(data);  
                }  
            });  
             
        };  
        reader.readAsDataURL(input.files[0]);  
      
    };  
    function getBase64Image(imgElem) {  
        return imgElem.replace("/^data:image\/(jpeg|jpg);base64,/", "");
    }  

    3.后台接收到图片的base64编码,进行解码,保存图片到项目本地,保存图片路径到数据库。

    @RequestMapping("updateheadimg")
        public ModelAndView updateMyHeadImg(String imgdatabase,String userid){
            ModelAndView mav=new ModelAndView();
            if(imgdatabase==null){
            
            }
            int a=imgdatabase.indexOf("base64");
            HttpServletRequest request = ((ServletRequestAttributes)RequestContextHolder.getRequestAttributes()).getRequest();
            String path=request.getSession().getServletContext().getRealPath("");
            imgdatabase=imgdatabase.substring(a+7);
            BASE64Decoder decoder=new BASE64Decoder();
            byte[] imgbyte;
            try {
                imgbyte = decoder.decodeBuffer(imgdatabase);
                SAXReader reader=new SAXReader();
                Document doc=reader.read(path+"\\WEB-INF\\classes\\headId.xml");
                Element root=doc.getRootElement();
                int headImgId=Integer.parseInt(root.getTextTrim());
                OutputStream os=new FileOutputStream(new File(path+"\\headImg\\"+headImgId+".png"));
                root.setText(""+(headImgId+1));
                UtilTool.SaveToXml(doc,new File(path+"\\WEB-INF\\classes\\headId.xml"));
                os.write(imgbyte,0, imgbyte.length);
                userService.insetUserHead(headImgId+".png", userid);//头像写入数据库
                os.close();
                mav.addObject("imgsrc", headImgId+".png");
            } catch (Exception e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            mav.setViewName("headimg");
            return mav;
        }

    4.图片名字我写在了headId.xml配置文件中并且每次保存了都+1处理,写在配置文件是保证了数据持久化,不会出现重名图片。

    <?xml version="1.0" encoding="UTF-8"?>
    <headid>
    1
    </headid>

    个人认为,将图片以二进制的方式保存到数据库更为合理方便,大家可以自己试一试,有空我也会贴出第二种方式的代码。

     

    转载于:https://www.cnblogs.com/qwqwQAQ/p/8329877.html

    展开全文
  • Java实现用户头像上传

    万次阅读 热门讨论 2018-08-25 14:04:39
    每次说起文件上传,就不得不提一下前端的实现方式,说来也奇怪,本博主最热门的博客居然也是文件上传,3万多的访问量占了总访问量的一多半:《传统form表单提交方式的文件上传与文件存储》,而且,今天搜索“form...

    概述

    每次说起文件上传,就不得不提一下前端的实现方式,说来也奇怪,本博主最热门的博客居然也是文件上传,3万多的访问量占了总访问量的一多半:《传统form表单提交方式的文件上传与文件存储》,而且,今天搜索“form表单提交文件” 百度第一篇居然就是这篇自己写的文章(下图留个纪念,不知道以后会不会有变化 哈哈)

    但是由于这篇文章写得比较早,博客玩的还不6,文章排版很糟糕,因此自己都不愿意看,今天完成了一个类似的功能:用户头像上传,特此重写一篇,巩固记忆。

    本功能涉及到的几个知识点:

    1、controller层的接收方式

    2、IO流相关的文件保存处理(路径问题、写出方式)

    3、spring boot 自带tomcat上传文件最大值限制的设置

    4、分系统分路径(Windows 或 Linux)

    5、文件保存的常规实现思路

    实现过程

    控制器接收方式

    以全栈的角度来分析这个功能,当然少不了前端的实现,但是目前多以前后端分离的方式来开发功能,因此,本篇博客着重讲解后端的spring boot的写法,这是本人认为比较工整的写法,对于前端的实现,可以看本篇博客的补充篇《传统form表单提交方式的文件上传与文件存储》。

    Controller的接收方式如下:

        @ApiOperation(value = "设置用户头像", notes = "设置当前用户头像")
        @PutMapping("/profiles")
        public SystemResult setUserProfile(@RequestParam(required = true) MultipartFile profile) {
            return userService.updUserProfile(profile);
        }

    请求方式是PUTrequired = true,参数类型为MutipartFile  ,只要是Spring 生态的应用程序,文件的接收都是使用MutipartFile这个类型,它表示通过 mutipart 请求上传了的一个文件。如果多个文件上传,那就用数组,如 MutipartFile[] 。

    Service处理

    Controller接收到文件后,Service需要完成两个大方向的处理:1、保存文件;2、路径存库

        @Override
        public SystemResult updUserProfile(MultipartFile newProfile) {
            // 根据Windows和Linux配置不同的头像保存路径
            String OSName = System.getProperty("os.name");
            String profilesPath = OSName.toLowerCase().startsWith("win") ? SystemConstant.WINDOWS_PROFILES_PATH
                    : SystemConstant.LINUX_PROFILES_PATH;
    
            if (!newProfile.isEmpty()) {
                // 当前用户
                User currentUser = (User) SecurityUtils.getSubject().getPrincipal();
                String profilePathAndNameDB = userDao.selectUserById(currentUser.getUserId()).getProfilePath();
                // 默认以原来的头像名称为新头像的名称,这样可以直接替换掉文件夹中对应的旧头像
                String newProfileName = profilePathAndNameDB;
                // 若头像名称不存在
                if (profilePathAndNameDB == null || "".equals(profilePathAndNameDB)) {
                    newProfileName = profilesPath+ System.currentTimeMillis()+ newProfile.getOriginalFilename();
                    // 路径存库
                    currentUser.setProfilePath(newProfileName);
                    userDao.updateUserProfilePath(currentUser);
                }
                // 磁盘保存
                BufferedOutputStream out = null;
                try {
                    File folder = new File(profilesPath);
                    if (!folder.exists())
                        folder.mkdirs();
                    out = new BufferedOutputStream(new FileOutputStream(newProfileName));
                    // 写入新文件
                    out.write(newProfile.getBytes());
                    out.flush();
                } catch (Exception e) {
                    e.printStackTrace();
                    return new SystemResult(HttpStatus.OK.value(), "设置头像失败", Boolean.FALSE);
                } finally {
                    try {
                        out.close();
                    } catch (IOException e) {
                        e.printStackTrace();
                    }
                }
    
                return new SystemResult(HttpStatus.OK.value(), "设置头像成功", Boolean.TRUE);
            } else {
                return new SystemResult(HttpStatus.OK.value(), "设置头像失败", Boolean.FALSE);
            }
        }

    注释写的比较细,文件的命名,以及目录的创建,也不需要多说什么了。

    关于两个系统中使用的路径,虽然Windows系统中都是使用反斜杠“\” ,但是在Java中反斜杠需要转义,比如:“C:\\用户\\文件夹\\文件.txt”,这样,在存入数据库的时候也会比较难看,后来经过测试发现在Java中使用“/”也是没问题的。上述代码两个路径常量如下:

        /** 头像保存路径 */
        public static final String WINDOWS_PROFILES_PATH = "C:/super_meeting/profiles/";
        public static final String LINUX_PROFILES_PATH = "/root/super_meeting/profiles/";

    另外,当前用户的获取是通过shiro中的安全管理器SecurityManager来取得的,我们也可以让页面传入一个用户的ID(如果页面知道的话)这样就适用于任何使用场景了。

    修改文件上传限制

    如果做到上一步,当你上传的文件过大,可能总是会报如下异常

    org.apache.tomcat.util.http.fileupload.FileUploadBase$FileSizeLimitExceededException: 
    The field profile exceeds its maximum permitted size of 1048576 bytes.

    可以看到这是Spring Boot自带的tomcat对上传文件大小的限制,我们需要增加一个配置信息:

    @Configuration
    public class CommonConfiguration {
        /**
         * 文件上传配置,在application配置文件中设置不起作用!
         */
        @Bean
        public MultipartConfigElement multipartConfigElement() {
            MultipartConfigFactory factory = new MultipartConfigFactory();
            // 单个文件最大
            factory.setMaxFileSize("10240KB"); // KB,MB
            // 设置总上传数据总大小
            factory.setMaxRequestSize("102400KB");
            return factory.createMultipartConfig();
        }
    }

    网上还有直接写在application.properties文件中的方式,但是本人亲测不管用,虽然不是很喜欢这种配置类的书写方式,但也没什么办法,凑合着用吧。

    配置文件的写法如下,如果哪位测试可用的话,请文末留言告诉我!!!文末留言告诉我!!!告诉我!!!

    spring.http.multipart.maxFileSize = 10Mb

    spring.http.multipart.maxRequestSize=100Mb

     测试

    查询数据库:

    打开swagger选择一张图片,或者你自己写一个form表单,都可以。

     

    检查一下 系统盘:

    数据库:

    完美!!

    综上,就是文件上传的全过程,其中省略了DAO层的代码,不过这个不是重点,重点还是我在概述中列出的那几项。如果有任何问题,请文末留言。

     

    展开全文
  • 注册页面头像上传实现: 1. 注册页面:register.jsp 两种方式实现图片上传: &lt;%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%...

    注册页面头像上传的实现:

    1. 注册页面:register.jsp

    两种方式实现图片上传:

    <%@ page language="java" contentType="text/html; charset=UTF-8"
        pageEncoding="UTF-8"%>
    <!DOCTYPE html>
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title>register</title>
    </head>
    <script type="text/javascript" src="jquery-3.3.1.min.js"></script>
    <style type="text/css">
    body{
    	margin-left:700px;
    	margin-top:100px;
    } 
    table{
    	width:500px;
    	height:320px;
    	border:1px solid #009999;
    }
    table tr{
    	border:1px solid #009999;
    }
    table tr td{
    	border:1px solid #009999;
    	text-align:left;
    }
    </style>
    <script type="text/javascript">
    	/* var xhr;
    //1.创建xmlhttprequest(xhr)对象
    	function checkuser(){
    		
    		try{
    		xhr=new XMLHttpRequest();
    		
    		}catch(e){
    			xhr=new ActiveXObject("Microsoft.XMLHTTP");
    		}
    		//alert(xhr);
    	//2.设置状态改变回调函数
    	xhr.onreadystatechange=cb;
    	var uname=document.getElementById("uname");
    	//3.设置请求方式和路径
    	//xhr.open("GET","CheckUserServlet?un="+uname.value);
    	xhr.open("POST","CheckUserServlet");
    	//如果是post请求必须加上请求头
    	xhr.setRequestHeader("Content-Type","application/x-www-form-urlencoded")
    	//4.发送请求
    	xhr.send("un="+uname.value);
    	}
    	//5.处理响应内容
    	function cb(){
    		//完成响应
    		if(xhr.readyState==4){
    			//成功响应
    			if(xhr.status==200){
    				var resText=xhr.responseText;
    				var msg=document.getElementById("msg");
    				//alert(resText);
    				if(resText=="t"){
    					msg.style.color="red";
    					msg.innerHTML="此用户名太受欢迎,请更换一个";
    				}else{
    					msg.style.color="green";
    					msg.innerHTML="恭喜您:账号可以使用";
    				}
    			}
    		}
    		//alert(xhr.readyState);
    	} */
    	$(function(){
    		$("#uname").blur(function(){
    			$.post("CheckUserServlet",{un:this.value},function(resText){
    				if(resText=="t"){
    					$("#msg").css("color","red").html("此用户名太受欢迎,请更换一个");
    				}else{
    					$("#msg").css("color","green").html("恭喜您:账号可以使用");
    				}
    			})
    		})
    	})
    </script>
    <body >
    <div id="all">
    	<form action="RegServlet" method="post" enctype="multipart/form-data">
    	<table>
    	<tr>
    	<td align="right" >创建用户名:</td>
    	<td><input type="text" id="uname" name="username" onblur="checkuser()"/><span id="msg"></span></td>
    	</tr>
    	
    	<tr>
    	<td align="right">创建密码:</td>
    	<td><input type="password" name="userpwd"/></td>
    	</tr>
    	
    	<tr>
    	<td align="right">注册邮箱:</td>
    	<td><input type="text" name="mail"/></td>
    	</tr>
    
    	<tr>
    	<td align="right">地址:</td>
    	<td><input type="text" name="address"/></td>
    	</tr>
    	
    	<tr>
    	<td align="right">爱好:</td>
    	<td><input type="text" name="hobby"/></td>
    	</tr>
    	
    	<tr>
    	<td align="right">头像:</td>
    	<td><input type="file" name="photo"></td>
    	</tr>
    	
    	<tr>
    	<td align="right"><input type="submit" value="提交"/></td>
    	<td align="right"><input type="reset" value="重置"/></td>
    	</tr>
    </table >
    </form>
    </div>
    </body>
    </html>

    2.RegisterServlet:

    package com.xintouyun.jweb.servlet;
    
    import java.io.File;
    import java.io.FileOutputStream;
    import java.io.IOException;
    import java.io.InputStream;
    import java.io.OutputStream;
    import java.util.List;
    import java.util.UUID;
    
    import javax.servlet.ServletContext;
    import javax.servlet.ServletException;
    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 com.xintouyun.jweb.entity.User;
    import com.xintouyun.jweb.service.UserService;
    import com.xintouyun.jweb.service.impl.UserServiceImpl;
    
    public class RegServlet extends HttpServlet{
    	public void doPost(HttpServletRequest request,HttpServletResponse response) throws IOException,ServletException{
    		// Create a factory for disk-based file items
    		DiskFileItemFactory factory = new DiskFileItemFactory();
    
    		// Configure a repository (to ensure a secure temp location is used)
    		ServletContext servletContext = this.getServletConfig().getServletContext();
    		File repository = (File) servletContext.getAttribute("javax.servlet.context.tempdir");
    		factory.setRepository(repository);
    
    		// Create a new file upload handler
    		ServletFileUpload upload = new ServletFileUpload(factory);
    
    		// Parse the request
    		try {
    			User user=new User();
    			List<FileItem> items = upload.parseRequest(request);
    			for (FileItem item : items) {
    				//如果是普通的form元素
    				if(item.isFormField()) {
    					String filename=item.getFieldName();
    					String value=item.getString("utf-8");
    					//System.out.println("普通form元素"+filename+":"+value);
    					if(filename.equals("username")) {
    						user.setUsername(value);
    					}else if(filename.equals("userpwd")) {
    						user.setUserpwd(value);
    					}else if(filename.equals("mail")) {
    						user.setEmail(value);
    					}else if(filename.equals("address")) {
    						user.setAddress(value);
    					}else if(filename.equals("hobby")) {
    						user.setHobby(value);
    					}
    				}else {
    					String filename=item.getName();
    					System.out.println("文件"+filename);
    					//获取文件名的后缀
    					String suffix=filename.substring(filename.lastIndexOf('.'));
    					//为了防止上传到服务器中的文件重名,所以在上传的时候我们可以将文件进行自动生成前缀,只保留后缀,再拼接到一块的方法,来避免文件重名
    					UUID uuid=UUID.randomUUID();
    					String prefix=uuid.toString();
    					//拼接后的文件名
    					String savefilename=prefix+suffix;
    					savefilename=savefilename.replace("-", "");
    					//System.out.println("要保存的文件名为"+savefilename);
    					String path=servletContext.getRealPath("/Images");
    					user.setPhoto(savefilename);
    					System.out.println("path"+path);
    					InputStream is=item.getInputStream();
    					OutputStream os=new FileOutputStream(new File(path+File.separator+savefilename));
    					byte[] b=new byte[1024];
    					int len;
    					while((len=is.read(b))!=-1) {
    						os.write(b, 0, len);
    					}
    					is.close();
    					os.close();
    				}
    			}
    			System.out.println("userpwd"+user.getUserpwd());
    			UserService userservice=new UserServiceImpl();
    			boolean result=userservice.saveUser(user);
    			if(result) {
    				//request.getRequestDispatcher("LoginPreServlet").forward(request, response);
    				response.sendRedirect("LoginPreServlet");
    			}else {
    				response.sendRedirect("RegisterPreServlet");
    			}
    		} catch (FileUploadException e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    		}
    	}
    	public void doGet(HttpServletRequest request,HttpServletResponse response) throws IOException,ServletException{
    		this.doPost(request, response);
    	}
    }
    

    3.配置xml文件

    4.重启服务器,浏览器访问

    展开全文
  • 前端jsp: form表单要加入: enctype="multipart/form-data" method="post" <tr> <td>图片:<font>*</font>:</td> ...pictureUrl=${candidate.image}" width.

    前端jsp:

    form表单要加入:

    enctype="multipart/form-data" method="post"

     

    <tr>
       <td>图片:<font>*</font>:</td>
       <td colspan="2">
          <img src="<%=basePath%>candidate/printPic?pictureUrl=${candidate.image}"  width="300px" height="200px"  id="imgs"/>
       </td>
       <td><input class="uploadImg" type="file" name="file"></td>
    </tr>

     

    js:

    $("#candidate_form  [name='file']").change(function() {
       var $file = $(this);
       var objUrl = $file[0].files[0];
       var windowURL = window.URL || window.webkitURL;
       var dataURL;
       dataURL = windowURL.createObjectURL(objUrl);
       $("#candidate_form #imgs").attr("src",dataURL);
    });

     

    后端:

    新增候选人:

    /**
     * 新增候选人
     * @param vo
     * @param response
     * @param request
     */
    @RequestMapping("/add")
    @ResponseBody
    @RepeatSubmitToken(removeToken = true)
    @RequiresPermissions(Auths.VOTING_ACTIVITY_ADD_CANDIDATE)
    public void addCandidate (@Valid final Candidate vo,
                             HttpServletResponse response, final HttpServletRequest request) throws BizException{
        String result = "";
        if(vo.getIntroduction().length()>200){
            throw new BizException("简介大于200字");
        }
        try {
            if(vo.getFile()!=null && vo.getFile().getSize()!=0){
                ImportUtils it = new ImportUtils();
                String url = it.saveFileToRoot(vo.getFile(),image,"/candidate",1);
                vo.setImage(url);
                candidateService.addCandidate(vo);
                result = "success";
            }else{
                result = "候选人图片不能为空!";
            }
        } catch (Exception ex) {
            result = "保存失败,"+ex.getMessage();
            ex.printStackTrace();
        }
        Map resultMap = new HashMap();
        resultMap.put("result",result);
        ResponseUtils.renderHtml(response, JSON.toJSONString(resultMap), "encoding:utf-8");
    }
    

    打印图片

    private String image = PropertyUtils.getPropertyValue("env", "upload.fileSavePath");
    @RequestMapping("/printPic")
    @ResponseBody
    public void printPic(HttpServletRequest request,HttpServletResponse response){
        String pictureUrl =request.getParameter("pictureUrl");
        if(pictureUrl!=null && !"".equals(pictureUrl)){
            try {
                String f = image+"/candidate/"+pictureUrl;
                response.setContentType("image/gif");
                File file = new File(f);
                FileCopyUtils.copy(new FileInputStream(file), response.getOutputStream());
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    }

     

     

    展开全文
  • 可以实现选择图片 然后剪切想要的大小 并上传 基于jsp的
  • JAVA + js 实现 头像上传及裁剪功能

    万次阅读 2012-10-23 17:47:44
    我想大家对头像上传功能在陌生不过了把,每个人都应该用过,当然,从不更改头像的大侠除外,写到这里,我突然想到我的CSDN用户也没有头像,于是,我到设置里面准备去看看CSDN的头像上传功能是怎样的,可是我弄了半天...
  • 定义一个方法,用来判断要上传的用户头像的路径 public class UploadFile { public static void main(String[] args) throws IOException { //输入头像路径 File path = getPath(); System.out.println
  • 实现头像,文件上传

    2018-06-25 12:40:58
    一、Tomcat服务器部分1、Tomcat服务器单独复制一份Tomcat,用来作为文件服务器1.1 web.xml文件:需要在该Tomcat的conf目录下的web.xml文件的大概100行添加如下几行(红框内部分):1.2 server.xml文件:需要在该...
  • js+jquery+java实现头像剪切上传,页面样式仿百度头像上传布局,界面美观大方
  • 上传头像小程序端的页面代码前面的注销代码一样,可以去【java小程序实战】小程序注销功能实现查看 文章目录小程序端的js实现(mine.js)java后台代码:1、UserService接口2、UserServiceImpl实现类3、...
  • Java web实现头像上传以及读取显示

    千次阅读 2019-08-28 11:27:21
    最近在做一个学生的信息管理系统,其中就有一个功能是要上传头像以及实现显示的功能,那么要如何实现呢? 思路:1.如果要上传头像并要显示的话,可以创建一个工具类来将获取的头像另外复制一份放在工程目录下,并修改...
  • 在很多的网站都可以实现上传头像,可以选择自己喜欢的图片做头像,从本地上传,下次登录时可以直接显示出已经上传头像,那么这个是如何实现的呢?   下面说一下我的实现过程(只是个人实现思路,实际网站怎...
  • 所需js插件 界面设计 <div class="pic-box"> <input class="fileInput" id="file" type="file" name="image" onchange="upload()"> </div>... var filename = $("#file...
  • java后台加安卓端实现头像上传功能

    千次阅读 2018-03-16 15:37:40
    1、手机上传压缩后的图片到服务器2、后台接收到图片进行图片重命名、保存后台代码 package service;import java.io.File;import java.io.IOException;import java.util.List;import javax.servlet.Servlet;import ...
  • java头像裁剪上传

    千次阅读 2015-05-28 09:26:59
    java头像裁剪上传 源代码下载地址:http://www.zuidaima.com/share/1550463771118592.htm
  • java上传头像前剪切预览

    千次阅读 2018-06-12 10:15:15
    首先说我是个渣渣,写这个供自己以后回顾及一些比我还新的新手借鉴一下,共同学习、共同进步。 百度了好几天,调了3个星期,每天晚上下班回来打开电脑就是调,头都大了,最后还是不负我努力啊,终于正常了点,不过还...
  • 需要实现的效果图: 前端代码:注意需要先引入layui.csslayui.js文件 <body> <%-- todo 表单文件上传必须指定的属性 enctype 这里没有使用表单文件上传 所以需要再后台代码上加注解 @MultipartConfig...
  • 头像上传裁剪预览功能-java

    千次阅读 2016-08-09 17:00:55
    头像上传裁剪预览功能-java
  • java实现文件上传与下载

    万次阅读 2015-08-08 13:59:19
    感谢:孤傲苍狼,JavaWeb学习总结(五十)——文件上传和下载 JAVA中文件上传下载知识点整理, 东风化宇,文件上传 一、对于文件上传,浏览器在上传的过程中是将文件以流的形式提交到服务器端的,Servlet获取上传...

空空如也

1 2 3 4 5 ... 20
收藏数 8,092
精华内容 3,236
关键字:

java实现头像上传

java 订阅