javaweb接收客户端上传的图片

 @RequestMapping(method = RequestMethod.POST, value = "/uploadfile")
@Transactional(propagation=Propagation.REQUIRED,rollbackFor=Exception.class)
public void uploadfile(HttpServletRequest request,HttpSession session,HttpServletResponse response){
String newfile = "";
try{  
request.setCharacterEncoding("utf-8");  
        //获得磁盘文件条目工厂。  
        DiskFileItemFactory factory = new DiskFileItemFactory();  
        //获取文件上传需要保存的路径,upload文件夹需存在。  
        String path =  ConstantUtil.PROJECT_PATH.replace("target/classes/", "src/main/webapp/upload");  
        //设置暂时存放文件的存储室,这个存储室可以和最终存储文件的文件夹不同。因为当文件很大的话会占用过多内存所以设置存储室。  
        factory.setRepository(new File(path));  
        //设置缓存的大小,当上传文件的容量超过缓存时,就放到暂时存储室。  
        factory.setSizeThreshold(1024*1024);  
        //上传处理工具类(高水平API上传处理?)  
        ServletFileUpload upload = new ServletFileUpload(factory);  
          
            //调用 parseRequest(request)方法  获得上传文件 FileItem 的集合list 可实现多文件上传。  
            List<FileItem> list = (List<FileItem>)upload.parseRequest(request);  
            for(FileItem item:list){  
                //获取表单属性名字。  
                String name = item.getFieldName();  
                //如果获取的表单信息是普通的文本信息。即通过页面表单形式传递来的字符串。  
                if(item.isFormField()){  
                    //获取用户具体输入的字符串,  
                    String value = item.getString();  
                    request.setAttribute(name, value);  
                }  
                //如果传入的是非简单字符串,而是图片,音频,视频等二进制文件。  
                else{   
                    //获取路径名  
                    String value = item.getName();  
                    //取到最后一个反斜杠。  
                    int start = value.lastIndexOf("\\");  
                    //截取上传文件的 字符串名字。+1是去掉反斜杠。  
                    String filename = value.substring(start+1);  
                    filename = new Date().getTime() + filename.substring(filename.indexOf("."));
                    request.setAttribute(name, filename);  
                      
                    /*第三方提供的方法直接写到文件中。 
                     * item.write(new File(path,filename));*/  
                    //收到写到接收的文件中。  
                    OutputStream out = new FileOutputStream(new File(path,filename));  
                    InputStream in = item.getInputStream();  
                      
                    int length = 0;  
                    byte[] buf = new byte[1024];  
                    System.out.println("size:"+ item.getSize());  
                    newfile = filename;
                    System.out.println("newfile:"+ newfile);  
                    while((length = in.read(buf))!=-1){  
                        out.write(buf,0,length);  
                    }  
                    in.close();  
                    out.close();  
                }  
            }  
        }catch(Exception e){  
            e.printStackTrace();  
        }  

JsonUtil.success2page(response,"{\"msg\":\"success\",\"filename\":\""+newfile+"\"}");
}
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: 在 Java Web 中,如果要显示上传图片,通常需要进行以下步骤: 1. 使用 HTTP 请求把图片文件上传到服务器。 2. 在服务器端保存图片文件。 3. 在 Web 页面上使用 HTML 元素 `<img>` 来显示图片。该元素的 "src" 属性指向图片文件的 URL,例如:`<img src="http://example.com/images/example.jpg">`。 请注意,如果图片文件存储在服务器的内部文件系统中,那么您可能需要在服务器端编写代码来将该文件读入内存并作为 HTTP 响应发送到客户端。 希望这些信息对您有帮助。 ### 回答2: 在JavaWeb上传图片并显示的过程中,一般遵循以下步骤: 1. 在前端页面中,通过HTML的input元素设置一个type为file的输入框,用于选择图片文件。 2. 在后端的Java代码中,接收前端上传图片数据,并将其保存到服务器的指定目录中。可以使用如Apache Commons FileUpload等工具简化文件上传过程。 3. 将保存在服务器上的图片路径存储到数据库中,以便之后能够读取和显示图片。 4. 在前端页面中,通过<img>标签指定显示图片的位置,并将后端获取到的图片路径传递给src属性。 5. 后端处理获取到的图片路径,将图片内容读取出来,并以合适的方式返回给前端。 6. 前端收到后端返回的图片内容后,通过设置<img>标签的src属性,将图片内容显示出来。 需要注意的是,需要配置正确的文件上传路径和文件访问路径,确保能够正确地保存和访问上传图片。另外,还需要考虑图片的格式校验、大小限制等,以保证上传图片满足需求和安全性要求。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Flutter基础框架_插件式

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值