首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

使用Servlet3.0时,我无法获取上传文件的实际FileName

在使用Servlet 3.0时,无法直接获取上传文件的实际文件名。Servlet 3.0是Java Servlet规范的一个版本,用于处理Web应用程序的请求和响应。

要获取上传文件的实际文件名,可以通过以下步骤实现:

  1. 获取上传文件的Part对象:在Servlet中,可以通过HttpServletRequest的getPart()方法或getParts()方法获取上传文件的Part对象。Part对象代表一个上传文件或表单字段。
  2. 从Part对象中获取文件名:通过Part对象的getSubmittedFileName()方法可以获取上传文件的原始文件名。该方法返回一个字符串,表示上传文件的文件名。

以下是一个示例代码,演示如何获取上传文件的实际文件名:

代码语言:java
复制
@WebServlet("/upload")
@MultipartConfig
public class UploadServlet extends HttpServlet {
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        Collection<Part> parts = request.getParts();
        for (Part part : parts) {
            String fileName = getSubmittedFileName(part);
            // 处理上传文件
        }
    }

    private String getSubmittedFileName(Part part) {
        String header = part.getHeader("content-disposition");
        String[] elements = header.split(";");
        for (String element : elements) {
            if (element.trim().startsWith("filename")) {
                return element.substring(element.indexOf('=') + 1).trim().replace("\"", "");
            }
        }
        return null;
    }
}

在上述示例中,通过request.getParts()方法获取所有上传文件的Part对象,然后通过自定义的getSubmittedFileName()方法从Part对象的content-disposition头部中解析出实际文件名。

对于Servlet 3.0,腾讯云提供了云服务器CVM、云函数SCF、对象存储COS等产品,可以用于搭建和部署Java Web应用程序,并处理文件上传。您可以参考以下链接了解更多关于腾讯云相关产品的信息:

请注意,以上链接仅供参考,具体产品选择应根据实际需求和情况进行评估和决策。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

使用Kindeditor文件(图片)上传出现上传失败解决办法使用Flash上传文件(图片)上传上传失败解决办法

我们在项目中使用在线编辑器是Kindeditor4.1.10,它们文件上传插件是使用Flash实现,原本应该就是能使用,但为什么老是显示上传失败,百度了一下前人经验和教训,出现这种情况,有两种可能...:1)上传目标文件夹没有写权限,导致上传文件无法进行写操作,所以上传失败;2)有做权限验证系统,因为利用Flash上传,由于在上传Flash插件没有把SessionId带过去,引起session...我们在做单张与多张上传目标路径是在同一个母文件夹下,所以不会是第一种情况引起,那就唯有是第二种情况了,基于这样判断,那就要在Flash上传时候手动加上sessionId参数和值,到服务端时候再接收下来应用到...name属性,这样,就能在Flash上传文件把你们SessionId带到服务端页面了,然后再要处理上传文件页面的开头加上 $session =\tools\Tools::allChar('__JentianYunSessionID.../Flash实现多文件(图片)上传就能成功了

3.3K10
  • 文件上传和下载

    文章目录 一、文件上传 1.1、存在问题. 1.2、Servlet3.0 文件上传 1.3、API 1.4、代码 二、文件上传拓展 2.1、获取上传文件名 2.2、使用UUID生成文件名 2.3...1.2、Servlet3.0 文件上传 ​ 既然文件上传如此头疼,那么总该有人挺身而出帮我们解决这个难题。Servlet 3.0 提供了文件上传操作功能,而且使用也非常简单。 ​...、获取上传文件名 ​ 我们可以使用使用 Part对象API来获取。...part.getSubmittedFileName()这一方法,无法直接获取文件名,如果使用是Tomcat7插件或者是Tomcat8以下版本,需要换方法。...cd.lastIndexOf("=")+2, cd.length()-1); 2.3、文件保存位置问题 ​ 文件在磁盘某个位置,不在项目下,无法使用 HTTP 协议访问,所以要把用户上传文件存放到项目中

    1.2K10

    Struts2 控制文件上传下载

    之前介绍servlet3.0新特性时候有提到过servlet API提供了一个part类来实现对文件上传和保存,Struts其实是在其基础上做了进一步封装,更加简单易用。..."/> 实际上在Struts文件上传中,它使用三个Action属性来描述被上传文件。...commons-fileupload-1.3.2.jar和commons-io-2.2.jar这两个包就是用于辅助表单上传内容赋值到action属性中,所以在使用Struts文件上传之前应当先包含着两个包到项目中...至此我们就完成了对上传文件获取保存,总体上看来,实际上还是使用了三个action实例属性对上传文件相关信息封装。...一个属性封装是该上传文件二进制内容,一个属性封装该文件文件名称,一个属性封装是该文件文件类型。实际上把控好这三个属性,基本可以完成对该上传文件所有操作。下面我们看文件下载。

    80370

    SpringMVC文件上传: MultipartResolver接口

    ,将上传请求包装成可以直接获取文件数据,方便操作 两个实现类 StandardServletMultipartResolver : 使用Servlet3.0标准上传方式 CommonsMultipartResolver...: 使用了Apachecommons-fileupload来完成具体上传操作 ( 本篇以此) 省略了SpringMvc配置: 导入 Jar文件 我们需要Apache 组件, 需要导入两个Jar...().getRealPath("/myfile/"); //获取当前要上传服务器路径; //上传文件名称: fileName String fileName = System.currentTimeMillis...().getRealPath("/myfile/"); //获取当前要上传服务器路径; System.out.println(path); //上传文件名称: fileName...= new File(path, fileName); //IO文件操作,创建出对应fileName文件名,放在对应path目录下; //执行上传: 上面只是在指定目录下创建出了一个空文件

    11310

    Spring MVC 学习总结(五)——校验与文件上传

    2.2.6、数值检查 建议使用在Stirng,Integer类型,不建议使用在int类型上,因为表单值为“”无法转换为int,但可以转换为String为"",Integer为null @Min           ...,以编辑更新验证同样可以使用;另外验证具体信息可以存放在配置文件中,如message.properties,这样便于国际化与修改。...四、文件上传 在Spring MVC中有两种实现上传文件办法,第一种是Servlet3.0以下版本通过commons-fileupload与commons-io完成通用上传,第二种是Servlet3.0...当我们指定了location后,我们在调用Partwrite(String fileName)方法把文件写入到硬盘时候可以,文件名称可以不用带路径,但是如果fileName带了绝对路径,那将以fileName...当上传所有文件大小超过了max-request-size也将抛出IllegalStateException异常。

    1K10

    Spring MVC-09循序渐进之文件上传(基于Apache Commons FileUpload)

    经过很多年,Servlet设计人员才意识到文件上传重要性,最终文件上传还是成了Servlet3内置特性。...因此,在SpringMVC中处理文件上传主要有两种方法 利用Apache Commons FileUpload组件 利用Servlet3.0及其更高版本内置支持 本篇博文我们探讨利用Apache Commons...HTML之前,如果要上传多个文件,需要使用多个input元素。 但是HTML5中,通过input元素中一如多个multiple属性,使得多个文件上传更加简单。...---- 利用Commons FileUpload上传文件 只有实现了Servlet3.0及其更高版本规范Servlet容器,才支持文件上传。...对于低于Servlet3.0容器,则需要使用Apache Commons FileUpload组件 maven依赖如下 commons-fileuploadgroupId

    29120

    什么年代了,你还不知道 Servlet3.0文件上传方式?

    StandardServletMultipartResolver 支持 Servlet3.0 中标准文件上传方案,使用非常简单;CommonsMultipartResolver 则需要结合 Apache...使用 StandardServletMultipartResolver,可以直接通过 HttpServletRequest 自带 getPart 方法获取上传文件并保存,这是一种标准操作方式,这种方式也不用添加任何额外依赖...第三个接口我们就利用了 Servlet3.0 API,调用 getPart 获取文件,然后再调用对象 write 方法将文件写出去即可。...如果我们使用 StandardServletMultipartResolver 做文件上传,这里获取 multipartRequest 就是 StandardMultipartHttpServletRequest...;如果我们使用 CommonsMultipartResolver 做文件上传,这里获取 multipartRequest 就是 DefaultMultipartHttpServletRequest。

    1.3K30

    jsp+servlet实现文件上传和下载

    实现文件上传和下载首先需要理解几个知识,这样才可以很好完成文件上传和下载;   (1):上传文件上传到服务器上,而保存到数据库是文件名   (2):上传文件是以文件转换为二进制流形式上传   ...(3): enctype="multipart/form-data"需要设置在form里面,否则无法提交文件            (4):必须在servlet3.0里面加上这句话,@MultipartConfig..."); 41 System.out.println("测试上传文件路径:"+root); 42 43 //获取文件后缀 44...:"+str); 46 47 //生成一个新文件名,不重复,数据库存储就是这个文件名,不重复 48 String filename..."); 52 System.out.println("测试上传文件路径:"+root); 53 54 //获取文件后缀 55

    3.3K100

    SpringMVC文件上传下载

    前言 大家好,是bigsai,今天我们学习SpringMVC文件上传下载。 文件上传和下载是互联网web应用非常重要组成部分,它是信息交互传输重要渠道之一。...在使用包含文件上传控件表单,必须使用该值。通常用来向服务端发送二进制数据,而我们文件也主要以二进制方式进行传输。 text/plain:空格转换为 "+" 加号,但不对特殊字符编码。...并且在咱们java web技术栈中文件上传也是有一定发展历史: servlet文件上传(3.0以前) 在servlet3.0以前,文件上传在服务端接收需要使用request.getInputStream...()获取表单二进制数据,但是在解析时候非常麻烦和复杂,对于文件上传这么一个很基本模块在接收时候可能要耗费很大成本和精力去解决它,并且很多初级攻城狮很可能由于对io模块陌生无法实现上传文件在服务端接收...而当你在SpringMVC中使用下载功能,无论是什么资源都以下载形式返回给客户端。这种区别可以参考下图: ? 在文件下载方面的实现,servlet本身也是实现文件下载,不过使用起来有点繁琐。

    73130

    Servlet3.0新特性(从注解配置到websocket编程)

    在你电脑任意位置创建一个空文件夹,将编译后class文件及其包复制进去,因为我们MyServlet在Test包下,此处就是将Test文件夹复制进去(你们需要根据自己建立文件进行操作) 然后创建一个空文件夹...四、文件上传API      对于传统文件上传,我们是需要借助于外部工具,例如:common-fileupload等。自从servlet3.0新规范以来,改进了文件上传API。...以下两个方法来获取此接口对象: Part getPart(String name); Collection getParts(); 一个part对应于我们一个文件上传域,也就是一个input...getHeader(String var1); //获取指定文件值 Collection getHeaders(String var1); //获取指定文件所有的值...打印了文件类型,文件名,最后将文件保存到本地桌面上。下面是运行结果截图: ? ? ? 综上就是关于文件上传API基本使用情况,还有一些内容留待下篇。。

    73490

    补习系列(11)-springboot 文件上传原理

    一、文件上传原理 一个文件上传过程如下图所示: ?...Tomcat 实现了 Servlet3.0 规范,通过ApplicationPart对文件上传流实现封装, 其中,DiskFileItem 描述了上传文件实体,在请求解析生成该对象, 需要关注是,DiskFileItem...: //启用文件上传 spring.http.multipart.enabled=true //文件大于该阈值,将写入磁盘,支持KB/MB单位 spring.http.multipart.file-size-threshold...,会返回400(BadRequest)错误; file-size-threshold是一个阈值,用于控制是否写入磁盘; location是存储目录,如果不指定将使用前面所述默认临时目录。...这几个参数由SpringMVC控制,用于注入 Servlet3.0 文件上传配置,如下: public class MultipartConfigElement { private final

    3.1K30

    使用Spring Boot、Multipartfile上传文件路径错误问题

    方法报错 File file = new File("/tmp/files/"); try { multipartFile.transferTo(file); ... } 问题分析 源码中文件定义是相对路径...,预期路径应该是项目路径/tmp/source/,但是报错确是一个系统临时文件路径(tomcat)。...Servlet3.0支持上传文件功能,如果我们没有使用绝对路径的话,transferTo方法会在相对路径前添加一个location路径,即:file = new File(location, fileName...),由于创建File在项目路径/tmp/files/,而transferTo方法预期写入文件路径为/tmp/tomcat/…/tmp/files/xxx.jpg,我们并没有创建该目录,因此会抛出异常...问题解决方案 1 使用绝对路径 2 修改location值 这个location可以理解为临时文件目录,我们可以通过配置location值,使其指向我们项目路径,这样就解决了我们遇到问题。

    11.6K30

    Java文件上传与下载【面试+工作】

    这是因为通过超链接下载文件,如果浏览器可以识别该文件格式,浏览器就会直接打开。只有浏览器不能识别该文件格式时候,才会实现下载。 因此利用第二种方法实现下载功能。...Servlet3.0规范已经提供方法来处理文件上传,但这种上传需要在Servlet中完成。而Spring MVC则提供了更简单封装。...():获取上传文件原名 Long getSize():获取文件字节大小,单位为byte boolean isEmpty():是否有上传文件 void transferTo(File dest):将上传文件保存到一个目录文件中...在实际项目的开发中,很多时候上传文件会作为对象属性被保存。SpringMVC处理也非常简单。 下面我们在content文件夹创建registerForm.jsp文件,演示接收文件上传: ?...download处理方法接收页面传递文件filename后,使用Apache Commons FileUpload组件FileUtils读取项目的上传文件,并将其构建成ResponseEntity

    3.7K40

    maven 项目 springMVC实现文件图片上传下载功能详解(源码已提供,小白必看)

    文件上传是项目开发中最常见功能之一 ,springMVC 可以很好支持文件上传,但是SpringMVC上下文中默认没有装配MultipartResolver,因此默认情况下其不能处理文件上传工作。...如果想使用Spring文件上传功能,则需要在上下文中配置MultipartResolver。...Servlet3.0规范已经提供方法来处理文件上传,但这种上传需要在Servlet中完成。 而Spring MVC则提供了更简单封装。...CommonsMultipartFile 常用方法: String getOriginalFilename():获取上传文件原名 InputStream getInputStream():获取文件流...="+URLEncoder.encode(fileName, "UTF-8")); File file = new File(path,fileName); //2、 读取文件--输入流

    1.9K10

    第7章—SpringMVC高级技术—处理multipart形式数据

    处理multipart形式数据 MultipartResolver 用于处理文件上传,当收到请求 DispatcherServlet checkMultipart() 方法会调用 MultipartResolver...在 MultipartFile 接口中有如下方法: String getName(); // 获取参数名称 String getOriginalFilename(); // 获取文件原名称 String...-- 设定文件上传写入内存最大值,如果小于这个参数不会生成临时文件,默认为10240 --> <...() 方法对请求数据进行解析,而 initializeMultipart() 方法又是被 getMultipartFiles() 方法调用,即当需要获取文件信息才会去解析请求数据,这种方式用了懒加载思想... request.getParts() 方法获取上传文件,并将其封装到 MultipartFile 对象中。

    1.7K20
    领券