java上传文件的几种方式_javaweb文件上传

java上传文件的几种方式_javaweb文件上传1、ServletFileUpload  表单提交中当提交数据类型是multipare/form-data类型的时候,如果我们用servlet去做处理的话,该http请求就会被servlet容器,包装成httpservletRequest对象  ,在由相应的servlet进行处理。packagecom.jws.app.operater.service.impl;…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

1、ServletFileUpload

  表单提交中当提交数据类型是multipare/form-data类型的时候,如果我们用servlet去做处理的话,该http请求就会被servlet容器,包装成httpservletRequest对象

  ,在由相应的servlet进行处理。

    

java上传文件的几种方式_javaweb文件上传
java上传文件的几种方式_javaweb文件上传

package com.jws.app.operater.service.impl; import java.io.File; import java.util.HashMap; import java.util.Iterator; import java.util.List; import javax.annotation.Resource; import javax.servlet.http.HttpServletRequest; import org.apache.commons.fileupload.FileItem; import org.apache.commons.fileupload.FileItemFactory; import org.apache.commons.fileupload.disk.DiskFileItemFactory; import org.apache.commons.fileupload.servlet.ServletFileUpload; import org.apache.log4j.Logger; import org.springframework.stereotype.Service; import net.sf.json.JSONObject; import com.jws.app.operater.data.UserInfoMapper; import com.jws.app.operater.model.UserInfo; import com.jws.app.operater.service.PersionPhoteAuthServer; import com.jws.common.constant.Constants; import com.jws.common.constant.ConstantsCode; import com.jws.common.util.JiveGlobe; import com.jws.common.util.ResultPackaging; @Service("persionPhoteAuthServerImpl") public class PersionPhoteAuthServerImpl implements PersionPhoteAuthServer { @Resource private UserInfoMapper userInfoMapper; private final Logger logger = Logger.getLogger(this.getClass()); @Override public JSONObject uploadPhoto(HttpServletRequest reques) { JSONObject returnObject = new JSONObject(); String path = Constants.imageUrl; File repositoryFile = new File(path); if (!repositoryFile.exists()) {repositoryFile.mkdirs();} FileItemFactory factory = new DiskFileItemFactory(1024 * 32,repositoryFile); ServletFileUpload upload = new ServletFileUpload(factory); upload.setHeaderEncoding("utf-8"); upload.setSizeMax(1024 * 1024 * 500); List<?> fileItr = null; try { fileItr = upload.parseRequest(reques); // 讲非文件值放在map中 HashMap<String, String> map = new HashMap<>(); Iterator<?> iter = fileItr.iterator(); while (iter.hasNext()) { FileItem item = (FileItem) iter.next(); if (item.isFormField()) { map.put(item.getFieldName(), item.getString()); } } // 验证参数 if (map == null || !map.containsKey("openid")) { returnObject =ResultPackaging.dealJsonObject(ConstantsCode.RESULT_CODE_FAIL, ConstantsCode.CODE_LACK_PARAMETER, null); return returnObject; } String openid = map.get("openid"); //处理文件 boolean isTrue = true; String filename = ""; Iterator<?> iter1 = fileItr.iterator(); while (iter1.hasNext()) { FileItem f = (FileItem) iter1.next(); if (!f.isFormField()) { //详情 name=abc.png, size=376507 bytes, isFormField=false, FieldName=picture1 filename = f.getName() == null ? "" : f.getName(); filename = JiveGlobe.getFromRom()+".jpg"; File saveFile = new File(path, filename); if (saveFile.exists()) { isTrue = false;break;} f.write(saveFile); } } if(JiveGlobe.isEmpty(filename)){ returnObject =ResultPackaging.dealJsonObject(ConstantsCode.RESULT_CODE_FAIL, ConstantsCode.CODE_LACK_PARAMETER, null); return returnObject; } returnObject =ResultPackaging.dealJsonObject(ConstantsCode.RESULT_CODE_SUCCESS, ConstantsCode.RESULT_CODE_SUCCESS, null); //保存文件信息 UserInfo rd = new UserInfo(); rd.setSpareField1("1"); rd.setSpareField3(filename); rd.setOpenId(openid); userInfoMapper.updateByPrimaryKey(rd); } catch (Exception e) { System.out.println(e); logger.error("###认证失败"+e); } return returnObject; } }

View Code

 

2、MultipartFile

   

java上传文件的几种方式_javaweb文件上传
java上传文件的几种方式_javaweb文件上传

@RequestMapping("/upload") @ResponseBody public String handleFileUpload(@RequestParam("file") MultipartFile file) { if (file.isEmpty()) { return "文件为空"; } // 获取文件名 String fileName = file.getOriginalFilename(); System.out.println("上传的文件名为:" + fileName); // 获取文件的后缀名 String suffixName = fileName.substring(fileName.lastIndexOf(".")); System.out.println("上传的后缀名为:" + suffixName); // 文件上传后的路径 String filePath = "D://"; File dest = new File(filePath + fileName); // 检测是否存在目录 if (!dest.getParentFile().exists()) { dest.getParentFile().mkdirs(); } try { file.transferTo(dest); return "上传成功"; } catch (IllegalStateException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } return "上传失败"; }

View Code

java上传文件的几种方式_javaweb文件上传
java上传文件的几种方式_javaweb文件上传

/** * 多文件具体上传时间,主要是使用了MultipartHttpServletRequest和MultipartFile * * @param request * @return */ @RequestMapping(value = "/batch/upload", method = RequestMethod.POST) public @ResponseBody String handleFileUpload1(HttpServletRequest request) { List<MultipartFile> files = ((MultipartHttpServletRequest) request).getFiles("file"); String filePath = "D://"; MultipartFile file = null; for (int i = 0; i < files.size(); ++i) { file = files.get(i); // 获取文件名 String fileName = file.getOriginalFilename(); System.out.println("上传的文件名为:" + fileName); if (!file.isEmpty()) { File dest = new File(filePath + fileName); // 检测是否存在目录 if (!dest.getParentFile().exists()) { dest.getParentFile().mkdirs(); } try { file.transferTo(dest); } catch (Exception e) { return "上传失败 " + i + " => " + e.getMessage(); } } else { return "上传失败 " + i + " 文件为空."; } } return "上传成功"; }

View Code

 

3、CommonsMultipartResolver

  

 *
     * @param request
     * @return
     */
    @ResponseBody
    @RequestMapping(“/uploadFile”)
    public Map<String, Object> uploadFile(HttpServletRequest request) {

        Map<String, Object> map = new HashMap<String, Object>();
        // 将当前上下文初始化给 CommonsMutipartResolver (多部分解析器)
        CommonsMultipartResolver multipartResolver = new CommonsMultipartResolver(request.getSession().getServletContext());
        // 检查form中是否有enctype=”multipart/form-data”
        if (multipartResolver.isMultipart(request)) {

            // 将request变成多部分request
            MultipartHttpServletRequest multiRequest = (MultipartHttpServletRequest) request;
            // 获取multiRequest 中所有的文件名
            Iterator iter = multiRequest.getFileNames();
            while (iter.hasNext()) {

                // 一次遍历所有文件
                MultipartFile file = multiRequest.getFile(iter.next().toString());
                try {

                    if (file != null && StringUtils.isNotBlank(file.getOriginalFilename().trim())) {

                        Map<String, String> metas = new HashMap<String, String>();
                        // 取得文件后缀
                        String filename = file.getOriginalFilename();
                        String newFileName = System.currentTimeMillis() + (int) (Math.random() * 100)
                                + filename.substring(filename.lastIndexOf(“.”));
                        metas.put(StorageConstants.META_KEY_FILENAME, newFileName);
                        String imgUrl = storageService.store(file.getBytes(), metas);
                        map.put(“imgUrl”, imgUrl);
                        map.put(“retCode”, “success”);
                        // map.put(“imgUrl”,
                        // “https://ss1.bdstatic.com/70cFuXSh_Q1YnxGkpoWK1HF6hhy/it/u=611483611,2895064642&fm=117&gp=0.jpg”);
                    }
                } catch (Exception e) {

                    e.printStackTrace();
                }
            }
        } else {

            map.put(“retCode”, “error”);
        }
        return map;

 

转载于:https://www.cnblogs.com/kimobolo/p/7109999.html

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/197140.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)
blank

相关推荐

  • 蓝屏stop 0x000000c4_stop蓝屏0x0000005c

    蓝屏stop 0x000000c4_stop蓝屏0x0000005c相信大家今天所用的系统大多是盗版的windows系列,但万幸的是我们勤劳的中华民族是一个智慧的民族!即使创造不出好的操作系统也会将盗版进行到底,最终形成自己的盗版文化!!!有幸成为一名中华民族的一份子,可以畅享盗版文化!!!前天帮人运行数据,期间卡了几次,帮人查资料的时候顺便用了下代理。结果第二天早上开机之后,几分钟内就成了如下图所示:相信…

  • AppSettings和ConnectionStrings的区别

    AppSettings和ConnectionStrings的区别AppSettings是ASP.NET1.1时期用的,在.NETFramework2.0中,新增了ConnectionStrings. 1.  providerName=”System.Data.SqlClient”/>  或是  providerName=”System.Data.SqlClient”/>  在里,在页面还可以这样引用.

  • 视频中的车牌特征识别[通俗易懂]

    视频中的车牌特征识别[通俗易懂]这里,没有直接采用之前的方案,是因为在设计的时候,发现直接采用颜色等直接特征提取然后进行二值化处理的方法,如果视频中出现颜色类似的区域,则很有可能错误的定位,例如在公交车中车牌区域范围和前窗以及部分的背景比较相似,直接采用这种方法会出错。这里,定位的算法,我们使用的是HOG特征提取和Adaboost的算法进行定位。对应的程序为:具体的原理如下所示:adaboost:http://www.doc88.com/p-211656392…

  • 静态变量存储在那个区? – 转[通俗易懂]

    静态变量存储在那个区? – 转[通俗易懂]一时间忘咯然后就去转载..静态变量存储在__区A全局区B堆C栈D常量区参考答案:A知识点内存到底分几个区?1、栈区(stack)—由编译器自动分配释放,存放函数的参数值,局部变量的值等。2、堆区(heap)—一般由程序员分配释放,若程序员不释放,程序结束时可能由os回收。注意它与数据结构中的堆是两回事,分配方式倒是类似于链表。3、全局区(静态区)(static)—全局变量和静态变量的存储是放在一块的,初始化的全局变量和静态变量在一块区域…

  • vue引入文件(.js)「建议收藏」

    vue引入文件(.js)「建议收藏」exportdefaulta;(曝光)importafrom’../assets/js/a’(引入)

  • sbc音频编解码是什么_人工智能fpga算法工程师

    sbc音频编解码是什么_人工智能fpga算法工程师转自:https://blog.csdn.net/wzz4420381/article/details/48676921原作者:wzz44203811.SBC算法简介SBC是subbandcode的缩写,也可称为子带编码 在A2DP协议中,SBC算法是默认支持的 蓝牙SBC算法是一种以中等比特率传递高质量音频数据的低计算复杂度的音频编码算法1.1算法基本框图SB…

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号