首页
学习
活动
专区
工具
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.5K10
  • 文件上传和下载

    文章目录 一、文件的上传 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实例属性对上传文件相关信息的封装。...一个属性封装的是该上传文件的二进制内容,一个属性封装该文件的文件名称,一个属性封装的是该文件的文件类型。实际上把控好这三个属性,基本可以完成对该上传文件的所有操作。下面我们看文件下载。

    82270

    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

    31120

    SpringMVC文件上传: MultipartResolver接口

    ,将上传请求包装成可以直接获取文件的数据,方便操作 两个实现类 StandardServletMultipartResolver : 使用了Servlet3.0标准的上传方式 CommonsMultipartResolver...: 使用了Apache的commons-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目录下; //执行上传: 上面只是在指定目录下创建出了一个空的文件

    17110

    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后,我们在调用Part的write(String fileName)方法把文件写入到硬盘的时候可以,文件名称可以不用带路径,但是如果fileName带了绝对路径,那将以fileName...当上传时所有文件的大小超过了max-request-size时也将抛出IllegalStateException异常。

    1K10

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

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

    1.4K30

    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.4K100

    SpringMVC文件上传下载

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

    74530

    补习系列(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.2K30

    使用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.8K30

    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的基本使用情况,还有一些内容留待下篇。。

    74990

    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、 读取文件--输入流

    2K10

    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.8K40

    1LINK fatal error LNK1104 无法打开文件“xxxxxxxxxxxxxxxx.exe”——使用VS2019时发生的报错

    1>LINK : fatal error LNK1104: 无法打开文件“xxxxxxxxxxxxxxxx.exe”——使用VS2019时发生的报错 可能的原因——无法打开你的应用或其 .pdb 文件...1.你的应用正在运行,或者它已加载到调试程序中 当文件名是你的可执行文件的名称或关联的 .pdb 文件时,请查看你的应用程序是否已在运行。...如果你的程序没有响应,你可能需要使用任务管理器来结束该进程。 你可能还需要关闭并重新启动 Visual Studio。...2.你的应用已被防病毒扫描锁定 防病毒程序通常会暂时阻止访问新创建的文件,尤其是 .exe 和 .dll 可执行文件。 要解决此问题,请尝试从防病毒扫描程序中排除你的项目生成目录。...在实际解决我自己发生报错的情况时,由于我没有在任务管理器中找到对应的进程,于是通过查找第二个原因得以解决。

    19810
    领券