1500字范文,内容丰富有趣,写作好帮手!
1500字范文 > 上传pdf文件转图片翻页小工具 遇到JSP form中type=file的文件上传及后台Part处理问

上传pdf文件转图片翻页小工具 遇到JSP form中type=file的文件上传及后台Part处理问

时间:2023-09-09 01:46:41

相关推荐

上传pdf文件转图片翻页小工具 遇到JSP form中type=file的文件上传及后台Part处理问

最近公司要求做一个上传pdf文件后将文件转换为翻页图片的小工具,我是这么做的

1.先找图片翻页的demo,微软有现有的产品turn.js感兴趣的可以自己看一下 ,有双页的有单页的,因为我司要求手机端使用,所以用的是单页的demo,我下面会附我的demo链接;

2.解决pdf文件转图片的功能开发;先是在配置文件里写固定路径读取文件,之后再说上传的入口;

3.提供上传文件功能,将文件直接转换图片;

问题就出在了第3步上,因为是个小工具,所以我就直接创建的一个javaweb项目,没有使用任何框架。

在前端写好jsp后,利用form表单进行file类型文件的传递,后天获取的值始终是null;

上网查了一下午,总结了一下个原因(当然,只有最后一个原因才是我遇到的问题原因)

原因一:前后端name值不一样,或者前端根本没有设置name值;

这里的name值必须设置,且一样;

第一个原因很初级,基本是小白会犯的错。

原因二:form表单没有设置enctype属性;

在提交普通类型时,此属性不需要设置,但是如果有文件类型的内容,则必须要设置该属性enctype="multipart/form-data";

其实在排查这个问题的时候,有一个疑问,就是设置了这个属性的时候,其他类型的值反而传到后台是null,很是奇怪(希望大神指教);

原因三:在提交文件类型时,method必须是post;

无论是前台form的method还是后台servlet的执行方法都需要post和doPost()运行;

原因四:文件内容太大,导致容器溢出,需要去tomcat的conf-server.xml文件中配置;

<Connector port="8080" protocol="HTTP/1.1"connectionTimeout="20000"redirectPort="8443" maxPostSize="-1" />

原因五:后台servlet需要MultipartConfig注解;

前面说了,我在刚开始做的时候认为是个小工具,完全不需要搭框架,所以在前面4个原因都排除了的情况下仍然没有解决问题,怪上火的,研究了半天知道是需要添加注解;

这个注解有一些要求就是需要spring的框架,和servlet3.0版本才可以;

查看servlet版本方法:找到tomcat安装包 -lib - servlet-api.jar 版本 拷贝出来 解压 在META-INF -MANIFEST.MF 用notepad++打开

Manifest-Version: 1.0

Ant-Version: Apache Ant 1.9.3

Created-By: 1.6.0_45-b06 (Sun Microsystems Inc.)

X-Compile-Source-JDK: 1.6

X-Compile-Target-JDK: 1.6

Name: javax/servlet/

Specification-Title: Java API for Servlets

Specification-Version: 3.0

Specification-Vendor: Sun Microsystems, Inc.

Implementation-Title: javax.servlet

Implementation-Version: 3.0.FR

Implementation-Vendor: Apache Software Foundation

添加spring的方法:

需要5个包:

commons-logging-1.2.jar

spring-beans-4.3.7.RELEASE.jar

spring-context-4.3.7.RELEASE.jar

spring-core-4.3.7.RELEASE.jar

spring-expression-4.3.7.RELEASE.jar

添加到web app library下 在web.xml里配置

<listener><listener-class>org.springframework.web.context.ContextLoaderListener</listener-class></listener><!-- 默认配置在WEB-INF目录下 --><context-param><param-name>contextConfigLocation</param-name><param-value>classpath:/applicationContext.xml</param-value> <!-- <param-value>/WEB-INF/spring*.xml</param-value> --></context-param>

在src下建立applicationContext.xml 内容如下

<?xml version="1.0" encoding="UTF-8"?><beansxmlns="/schema/beans"xmlns:xsi="/2001/XMLSchema-instance"xmlns:p="/schema/p"xsi:schemaLocation="/schema/beans /schema/beans/spring-beans-3.0.xsd"></beans>

这样就可以正常使用注解啦~

原因六:又来了。。。其他方式获取part

做了与另一个项目的整合,原来的项目只用了spring的一个配置,整合到springMVC时加入MultipartConfig时Controller跳不进去(怪我太菜),但是用原有的方法获取文件 不得不加此注解,但是Controller是首先要跳进去的 ,所以只能放弃注解方式,用原始request方式迂回获取文件(前提是调试模式request是有值的,但是在获取part是null)

所以试试能不能直接在request里取出文件 ,看到有个multipartFiles属性,在调试计算器里试着找,果然找到了

点击完是这个

进行了一个转义,但是好在能取到,所以将原来代码修改,这里就不需要@MultipartConfig注解了

这样就获取到文件啦~

上传pdf文件转图片翻页小工具 遇到JSP form中type=file的文件上传及后台Part处理问题(后台取值为null)

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。