-
2021-02-28 08:02:43
从request获取各种路径总结
request.getRealPath("url"); // 虚拟目录映射为实际目录
request.getRealPath("./"); // 网页所在的目录
request.getRealPath("../"); // 网页所在目录的上一层目录
request.getContextPath(); // 应用的web目录的名称
例如 http://localhost:8080/bookStore/
/bookStore/ => [contextPath] (request.getContextPath())
获取Web项目的全路径
String strDirPath = request.getSession().getServletContext().getRealPath("/");
以工程名为TEST为例:
(1)得到包含工程名的当前页面全路径:request.getRequestURI()
结果:/TEST/test.jsp
(2)得到工程名:request.getContextPath()
结果:/TEST
(3)得到当前页面所在目录下全名称:request.getServletPath()
结果:如果页面在jsp目录下 /TEST/jsp/test.jsp
(4)得到页面所在服务器的全路径:application.getRealPath("页面.jsp")
结果:D:\resin\webapps\TEST\test.jsp
(5)得到页面所在服务器的绝对路径:absPath=new java.io.File(application.getRealPath(request.getRequestURI())).getParent();
结果:D:\resin\webapps\TEST
2.在类中取得路径:
(1)类的绝对路径:Class.class.getClass().getResource("/").getPath()
结果:/D:/TEST/WebRoot/WEB-INF/classes/pack/
(2)得到工程的路径:System.getProperty("user.dir")
结果:D:\TEST
3.在Servlet中取得路径:
(1)得到工程目录:request.getSession().getServletContext().getRealPath("") 参数可具体到包名。
结果:E:\Tomcat\webapps\TEST
(2)得到IE地址栏地址:request.getRequestURL()
结果:http://localhost:8080/TEST/test
(3)得到相对地址:request.getRequestURI()
结果:/TEST/test
更多相关内容 -
从request中获取文件流的两种方式
2018-06-14 14:23:51方法一: 从HttpServletRequest中获取文件信息参考文档:https://blog.csdn.net/java_newstar/article/details/78053891Collection<Part> parts = req.getParts(); for (Iterator<Part> ...方法一: 从HttpServletRequest中获取文件信息
参考文档:https://blog.csdn.net/java_newstar/article/details/78053891Collection<Part> parts = req.getParts(); for (Iterator<Part> iterator = parts.iterator(); iterator.hasNext();) { Part part = iterator.next(); System.out.println("-----类型名称------->"+part.getName()); System.out.println("-----类型------->"+part.getContentType()); System.out.println("-----提交的类型名称------->"+part.getSubmittedFileName()); System.out.println("----流-------->"+part.getInputStream()); }
方法二: 从MultipartHttpServletRequest中获取文件信息
//将当前上下文初始化给 CommonsMutipartResolver (多部分解析器) CommonsMultipartResolver multipartResolver=new CommonsMultipartResolver( request.getSession().getServletContext()); // 判断是否是多数据段提交格式 if (multipartResolver.isMultipart(request)) { MultipartHttpServletRequest multiRequest = (MultipartHttpServletRequest)request; Iterator<String> iter = multiRequest.getFileNames(); logger.info("iter.hasNext(): "+iter.hasNext()); Integer fileCount = 0; while (iter.hasNext()) { MultipartFile multipartFile = multiRequest.getFile(iter.next()); String fileName = multipartFile.getOriginalFilename(); logger.info("upload filename: " + fileName ); if(fileName == null || fileName.trim().equals("")){ continue; } //20170207 针对IE环境下filename是整个文件路径的情况而做以下处理 Integer index = fileName.lastIndexOf("\\"); String newStr = ""; if(index>-1){ newStr = fileName.substring(index+1); }else{ newStr = fileName; } if(!newStr.equals("")){ fileName = newStr; } logger.info("new filename: " + fileName ); if (multipartFile != null) { HashMap<String,Object> result = DispatchInterfaceUtil.uploadInputStream(multipartFile.getInputStream(),multipartFile.getSize(),fileName); } } }
-
4.从Request中获取文件数据
2017-11-06 12:40:41* 工具类 -从HttpServletRequest中获取文件数据 * */ public class RequestUtil { /** * 从HttpServletRequest中获取所有的文件 * * @param request * @return FileItem对象列表 * @...import java.io.File; import java.util.ArrayList; import java.util.List; import javax.servlet.http.HttpServletRequest; 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; /** * 工具类 -从HttpServletRequest中获取文件数据 * */ public class RequestUtil { /** * 从HttpServletRequest中获取所有的文件 * * @param request * @return FileItem对象列表 * @throws FileUploadException */ public static List<FileItem> getFileItemList(HttpServletRequest request) throws FileUploadException { List<FileItem> fileItemFromRequestList = getDataFromRequest(request); if (fileItemFromRequestList != null && !fileItemFromRequestList.isEmpty()) { List<FileItem> fileItemList = new ArrayList<>(); for (FileItem fileItem : fileItemFromRequestList) { if (!fileItem.isFormField()) { // 文件 fileItemList.add(fileItem); } } return fileItemList; } return null; } /** * 从request中获取FileItem对象列表 * * @param request * @return fileItemFromRequestList * @throws FileUploadException */ private static List<FileItem> getDataFromRequest(HttpServletRequest request) throws FileUploadException { String tempPath = request.getServletContext().getRealPath("/temp"); File file = new File(tempPath); DiskFileItemFactory factory = new DiskFileItemFactory(); factory.setSizeThreshold(1024 * 1024 * 1024);// 设置缓存大小 factory.setRepository(file);// 默认情况下 临时文件不会自动删除 ServletFileUpload servletFileUpload = new ServletFileUpload(factory); List<FileItem> fileItemFromRequestList = servletFileUpload.parseRequest(request); file.delete(); // 删除临时文件 return fileItemFromRequestList; } }
-
获取request中文件流
2021-04-16 16:53:251.先看request中文件类型 2.强转类型成StandardMultipartHttpServletRequest StandardMultipartHttpServletRequest standardMultipartHttpServletRequest = (StandardMultipartHttpServletRequest) request; 3...1.先debug看request中文件类型
2.强转类型成StandardMultipartHttpServletRequest
StandardMultipartHttpServletRequest standardMultipartHttpServletRequest = (StandardMultipartHttpServletRequest) request;
3.StandardMultipartHttpServletRequest中有一个获取参数的方法getParameterMap,可以直接获取到request中的相关参数
StandardMultipartHttpServletRequest standardMultipartHttpServletRequest = (StandardMultipartHttpServletRequest) request; Map<String, String[]> parameterMap = standardMultipartHttpServletRequest.getParameterMap(); String[] imageFiles= parameterMap.get("imageFile");//上报的文件的参数名称
4.还有一个是获取多文件的方法getMultiFileMap返回是MultiValueMap,是StandardMultipartHttpServletRequest继承AbstractMultipartHttpServletRequest中的方法
MultiValueMap<String, MultipartFile> multiFileMap = standardMultipartHttpServletRequest.getMultiFileMap(); //获取文件 MultipartFile multipartFile = multiFileMap.getFirst("xxxFile"); if(multipartFile != null){ //获取文件名 String originalFilename = multipartFile.getOriginalFilename(); //获取流 InputStream inputStream = multipartFile.getInputStream(); //上传到oss String imageUrl = recvHikVisionUploadImage(inputStream,originalFilename); } private static String readInfoStreamToBytes(InputStream is) { if (is == null) { return null; } // 字节数组 byte[] bCache = new byte[2048]; int readSize = 0;// 每次读取的字节长度 int totalSize = 0;// 总字节长度 ByteArrayOutputStream infoStream = new ByteArrayOutputStream(); try { // 一次性读取2048字节 while ((readSize = is.read(bCache)) > 0) { totalSize += readSize; if (totalSize > 1024 * 1024 * 10) { return null; } // 将bcache中读取的input数据写入infoStream infoStream.write(bCache, 0, readSize); } } catch (IOException e1) { return null; } finally { try { is.close(); } catch (IOException e) { } } BASE64Encoder encoder = new BASE64Encoder(); return encoder.encode(infoStream.toByteArray()); } public String recvHikVisionUploadImage(InputStream inputStream,String originalFilename){ try { String imgStr = readInfoStreamToBytes(inputStream); sun.misc.BASE64Decoder decoder = new sun.misc.BASE64Decoder(); // Base64解码 byte[] b = decoder.decodeBuffer(imgStr); for (int i = 0; i < b.length; ++i) { if (b[i] < 0) {// 调整异常数据 b[i] += 256; } } //上传到oss BaseResult<String> result = ossV2Helper.uploadFileInputStream(b, originalFilename +".jpg", "jpg"); return result.getData(); }catch (IOException e){ e.printStackTrace(); } return null; }
下面是完整代码,有model类和一些判断会删除掉
@RequestMapping("/XXX") public BaseResult<XXX> XXX(HttpServletRequest request) throws IOException { StandardMultipartHttpServletRequest standardMultipartHttpServletRequest = (StandardMultipartHttpServletRequest) request; Map<String, String[]> parameterMap = standardMultipartHttpServletRequest.getParameterMap(); String[] imageFiles= parameterMap.get("imageFile");//上报的文件的参数名称 if(!StringUtils.isEmpty(mixedTargetDetections) && mixedTargetDetections.length > 0){ //获取必要的设备信息 String mixedTargetDetection = mixedTargetDetections[0]; JSONObject jsonObject = JSONObject.parseObject(mixedTargetDetection); if(!StringUtils.isEmpty(jsonObject.get("macAddress"))){ //mac地址 String macAddress = jsonObject.get("macAddress").toString(); String deviceMac = macAddress.replaceAll(":", ""); MultiValueMap<String, MultipartFile> multiFileMap = standardMultipartHttpServletRequest.getMultiFileMap(); //获取文件 MultipartFile multipartFile = multiFileMap.getFirst("xxxFile"); if(multipartFile != null){ String originalFilename = multipartFile.getOriginalFilename(); InputStream inputStream = multipartFile.getInputStream(); String imageUrl = recvHikVisionUploadImage(inputStream,originalFilename); }else { logger.info("nofaceImage=" +multiFileMap.toString()); } }else{ logger.info("mixedTargetDetection=" +mixedTargetDetection); } }else{ logger.info("parameterMap=" +parameterMap.toString()); } return BaseResult.success(); } private static String readInfoStreamToBytes(InputStream is) { if (is == null) { return null; } // 字节数组 byte[] bCache = new byte[2048]; int readSize = 0;// 每次读取的字节长度 int totalSize = 0;// 总字节长度 ByteArrayOutputStream infoStream = new ByteArrayOutputStream(); try { // 一次性读取2048字节 while ((readSize = is.read(bCache)) > 0) { totalSize += readSize; if (totalSize > 1024 * 1024 * 10) { return null; } // 将bcache中读取的input数据写入infoStream infoStream.write(bCache, 0, readSize); } } catch (IOException e1) { return null; } finally { try { is.close(); } catch (IOException e) { } } BASE64Encoder encoder = new BASE64Encoder(); return encoder.encode(infoStream.toByteArray()); } public String recvHikVisionUploadImage(InputStream inputStream,String originalFilename){ try { String imgStr = readInfoStreamToBytes(inputStream); sun.misc.BASE64Decoder decoder = new sun.misc.BASE64Decoder(); // Base64解码 byte[] b = decoder.decodeBuffer(imgStr); for (int i = 0; i < b.length; ++i) { if (b[i] < 0) {// 调整异常数据 b[i] += 256; } } BaseResult<String> result = ossV2Helper.uploadFileInputStream(b, originalFilename +".jpg", "jpg"); return result.getData(); }catch (IOException e){ e.printStackTrace(); } return null; }
-
浅谈图片上传利用request.getInputStream()获取文件流时遇到的问题
2020-08-28 21:17:44下面小编就为大家带来一篇浅谈图片上传利用request.getInputStream()获取文件流时遇到的问题。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧 -
使用JavaScript获取Request中参数的值方法
2020-10-21 10:38:41下面小编就为大家带来一篇使用JavaScript获取Request中参数的值方法。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧 -
基于从request获取各种路径的方法介绍
2020-08-28 18:03:58下面小编就为大家分享一篇基于从request获取各种路径的方法介绍,具有很好的参考价值,希望对大家有所帮助 -
从request中获取当前请求中的文件列表
2015-11-23 14:22:25* 获取当前请求中的文件列表 * * @param request * @return */ protected List getMultipartFileList( HttpServletRequest request) { List files = new ArrayList(); try { ... -
java中通过request获取IP以及MAC地址.java
2021-06-02 16:51:55获取用户请求IP地址 根据IP地址获取mac地址 -
获取request中的文件对象
2020-01-16 14:13:07MultiPartRequestWrapper wrapper=(MultiPartRequestWrapper)request; File[] file=wrapper.getFiles("fileName"); byte[] bytes=new byte[(int)file[0].length()]; InputStream inputStrea... -
从Request中获取json格式数据
2020-11-11 10:16:14从Request中获取json格式数据 前端请求头的数据格式: Content-Type: application/json;charset=UTF-8 import java.io.IOException; import javax.servlet.http.HttpServletRequest; import ... -
asp.net 从POST的数据流中提取参数和文件
2020-10-29 08:42:27按理,Form提交的数据,无论是application/x-www-form-urlencoded还是multipart/form-data(有附件时),都可在服务端通过Request.Form["name"]和Request.Files["name"]获取到参数和上传的文件。 -
java从request中获取GET和POST请求参数
2020-11-17 14:52:44一 、获取请求方式 request.getMethod(); get和post都可用, 二 、获取请求类型 request.getContentType(); get和post都可用,示例值:application/json ,multipart/form-data, application/xml等 三 、获取所有... -
Python request urllib 获取远程文件大小
2020-12-14 18:08:59Python request urllib 获取远程文件大小 有两个方法 requests库 import urllib import requests url=r'https://down.qq.com/qqweb/PCQQ/PCQQ_EXE/PCQQ2020.exe' download=requests.get(url) print(download.... -
Httpservletrequest获取上传文件
2021-04-12 14:52:29servlet3.0以上才能用 servlet3.0以上才能用 servlet3.0以上才能用 servlet3.0如果使用commons-fileupload...//获取上传文件对象 fileName = pohto.getSubmittedFileName();//获取上传文件的文件名 pohto.wr... -
WinForm窗体程序中使用CefSharp获取加载后的资源、截取request参数、拦截response数据、注入jquery文件和js...
2020-07-10 02:37:59环境:vs2019、.net 4.6。 WinForm窗体程序中使用CefSharp获取加载后的资源、截取request参数、拦截response数据、注入jquery文件和js代码。有问题可联系q369628105 -
springmvc文件上传,upload.parseRequest(request)获取文件为空解决办法:不删除CommonsMultipartResolver
2019-05-12 17:19:09前一个地方使用的是WebUploader开源框架来上传的,后一个地方是使用的Pdf.js开源框架保存正文的实现文件上传,项目的Controller层使用的是springmvc,并且在springmvc.xml中配置了文件上传解析器: <bean id=... -
request中获取参数的四种通用方法
2020-06-30 18:53:39@WebServlet("/RequestDemo6") public class RequestDemo6 extends HttpServlet { protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { //... -
flask中request对象以及文件上传详解
2019-03-21 11:37:38request获取请求参数: from flask import request 与Django不同的是,flask是不需要将request对象作为第一个参数传入视图函数,他的request对象是来自于flask,是一个全局对象,我们只需导入即可使用,request对象... -
Springboot解决入参HttpServletRequest获取文件失败问题
2021-12-24 15:20:37使用Springboot的上传文件的时候,出现了一个问题 : FileItemFactory factory = new DiskFileItemFactory(); ServletFileUpload fileUpload = new ServletFileUpload(factory); //设置所上传文件的大小 ... -
Python 中request数据的获取
2021-04-27 01:12:17@app.route('/users', methods=['GET', '..."print(request.data)//同:request.get_data()print(request.json)如何获取request的参数在于客户端请求头Headers中参数:Content-Type的设置以及传参的方式一、Conte... -
普通java类 获取Request
2011-11-28 17:08:58普通java类 获取Request -
springboot上传文件使用Request对象中可以获取各种路径信息
2019-01-22 13:51:08场景描述:使用springboot上传文件到服务器,但是需要将文件路径返回给前台。项目中使用的是用虚拟路径配置返回形式如下: ... 测试环境:springboot 2.0.3+jdk1.8+tomcat 8.0 正式环境:spr... -
从HttpServletRequest中获取文件输入流
2019-12-11 10:56:38从HttpServletRequest中获取文件输入流 import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.multipart.MultipartFile; import org.springframework.web.multipart.... -
Java的request实现文件上传功能
2022-04-13 12:54:54java文件上传(解析request流) 问题:JavaWeb中实现文件上传的方式有哪些? JAVA+HttpServletRequest文件上传 Java后端 实现基本HttpRequest 上传文件 <!DOCTYPE ...