当前位置:首页 » 文件管理 » javamvc附件上传

javamvc附件上传

发布时间: 2025-07-02 15:23:11

㈠ spring mvc 怎么大小上传文件控制

1、SpringMVC的配置文件里面可以配置限制上传文件的大小,比如40MB,但是,如果在页面上上传超过40MB ,则他都不进入到Action,则直接就报错了。被拦截了。

2、客户端判断的话,IE8、IE9、火狐好像支持都不一样,有说用Flash的,有说用HTML5的,
个人感觉HTML5不太靠谱,毕竟现在的应用肯定是要支持IE8、IE9的。

java实现文件上传,代码尽量简洁~~~~~·

你说的2种方法都是很简单的,参考网上的资料都不难做出,用io流做更是基础中的基础,我说下smartupload好了,有的人是直接写在jsp上面,感觉比较乱,我一般都是写在action里面,打好jar包和配置后

SmartUpload mySmartUpload = new SmartUpload();

//如果是struts2.0或者webwork 则是mySmartUpload.initialize(ServletActionContext.getServletConfig(),ServletActionContext.getRequest(),ServletActionContext.getResponse());

mySmartUpload.initialize(servlet.getServletConfig(), request,response);
mySmartUpload.setTotalMaxFileSize(500000);
//如果上传任意文件不设置mySmartUpload.setAllowedFilesList(文件后缀名)就可以了
mySmartUpload.upload();
for (int i = 0; i < mySmartUpload.getFiles().getCount(); i++) {
com.jspsmart.upload.File file = mySmartUpload.getFiles().getFile(i);
if (file.isMissing()) continue;
file.saveAs(保存的地址 + file.getFileName(),
su.SAVE_PHYSICAL);

㈢ SpringMVC使用commons fileupload 上传文件,parseRequest(request)得到的集合为空,急等大神指点。

既然你已经用了Spring MVC,就没有必要自己写上传的代码了,这样做
下一个这样的方法,把MultipartFile传进去
public String upload(@RequestParam(value = "image") MultipartFile image)
然后就可以这样做了
image.transferTo(new File("想要保存到哪里"));

image还有其他的方法,自己看一下就可以了

XML配置一个bean

<bean id="multipartResolver"
class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<property name="maxUploadSize" value="104857600" />
<property name="maxInMemorySize" value="4096" />
<property name="defaultEncoding" value="utf-8" />
</bean>

㈣ spring mvc 多文件上传时报错MultipartHttpServletRequest

1、确认<form name="contractForm" id="contractForm" action="" method="post" enctype ="multipart/form-data">;
2、确认commons-fileupload.jar 和 org.springframework.web.jar 存在环境
3、MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest)request;
这一句会报错:ApplicationHttpRequest cannot be cast to MultipartHttpServletRequest
解决办法是通过这种方式:
MultipartResolver resolver = new CommonsMultipartResolver(request.getSession().getServletContext());
MultipartHttpServletRequest multipartRequest = resolver.resolveMultipart(request);

㈤ 求SpringMVC大文件上传详解及实例代码

SpringMVC的文件上传非常简便,首先导入文件上传依赖的jar:
<!-- 文件上传所依赖的jar包 -->
<dependency>
<groupId>commons-fileupload</groupId>
<artifactId>commons-fileupload</artifactId>
<version>1.3.1</version>
</dependency>

在springMVC-servlet.xml配置文件中配置文件解析器:
<!--1*1024*1024即1M resolveLazily属性启用是为了推迟文件解析,以便捕获文件大小异常 -->
<!--文件上传解析器-->
<bean id="multipartResolver"
class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<property name="maxUploadSize" value="1048576"/>
<property name="defaultEncoding" value="UTF-8"/>
<property name="resolveLazily" value="true"/>
</bean>
注意解析器的id必须等于multipartResolver,否则上传会出现异常
import org.apache.commons.io.FileUtils;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.multipart.commons.CommonsMultipartFile;

import java.io.File;

@Controller
public class FileController {
/**
* 上传单个文件操作
* MultipartFile file就是上传的文件
* @return
*/
@RequestMapping(value = "/upload1.html")
public String fileUpload1(@RequestParam("file") MultipartFile file) {
try {
//将上传的文件存在E:/upload/下
FileUtils.InputStreamToFile(file.getInputStream(), new File("E:/upload/",
file.getOriginalFilename()));
} catch (Exception e) {
e.printStackTrace();
}
//上传成功返回原来页面
return "/file.jsp";
}}

上传文件时,Controller的方法中参数类型是MultipartFile即可将文件映射到参数上。
页面:
file.jsp:
<form method="post" action="/upload1.html" enctype="multipart/form-data">
<input type="file" name="file"/>
<button type="submit" >提交</button>
</form>

㈥ ueditor 怎么自定义上传文件的路径啊求指导,,最好是有源码

UEditor是由网络WEB前端研发部开发的所见即所得的开源富文本编辑器,具有轻量、可定制、用户体验优秀等特点。
开源基于BSD协议,所有源代码在协议允许范围内可自由修改和使用。
网络UEditor的推出,可以帮助不少网站开发者在开发富文本编辑器所遇到的难题,节约开发者因开发富文本编辑器所需要的大量时间,有效降低了企业的开发成本。
优点
1、体积小巧,性能优良,使用简单
2、分层架构,方便定制与扩展
3、满足不同层次用户需求,更加适合团队开发
4、丰富完善的中文文档
5、多个浏览器支持:Mozilla, MSIE, FireFox, Maxthon,Safari 和Chrome
6、更好的使用体验
7、拥有专业QA团队持续支持,已应用在网络各大产品线上
使用步骤
1.添加jar包 jar包位置:文件根目录下jsp的lib文件夹下,把jar包复制到web-inf下的lib文件夹下buildpath
2.修改config.js中的URL路径,修改为UEidtor插件在自己工程中的正确根路径
3.在jsp文件中先引入配置文件config.js然后再源码文件all.js(注意顺序)
4.加载容器和实例化容器
1.修改config.js配置文件URL为插件根目录,一般是绝对路径。

2.修改config.json中上传图片配置项中的访问路径前缀为项目名称,根据情况修改上传文件路径和访问路径。
配置正确之后UEditor有上传功能帮助我们上传图片。
但是上传路径会在项目部署的临时文件夹下。 tomcat取消部署后,上传文件就会和项目部署文件一起被删除

3.实现把图片上传到自定义路径
在处理上传后的文件名称的时候注意不要出现中文
要不然还需要做处理才能正确读取文件!

4.(1)首先在jsp中覆盖UEidtor获取路径的方法

//覆盖UEditor中获取路径的方法
UE.Editor.prototype._bkGetActionUrl = UE.Editor.prototype.getActionUrl;
UE.Editor.prototype.getActionUrl = function(action) {
//判断路径 这里是config.json 中设置执行上传的action名称
if (action == 'uploadimage') {
return 'http://localhost:8080/maven-web/uploadImage.do';
} else if (action == 'uploadvideo') {
return '';
} else {
return this._bkGetActionUrl.call(this, action);
}
}
(2)首先在springmvc配置文件中配置

<!-- 上传配置 -->
<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<property name="defaultEncoding" value="UTF-8"></property>
</bean>

在controller中定义上传和读取文件的方法
/**
* SpringMVC 用的是 的MultipartFile来进行文件上传
* 这里用@RequestParam()来指定上传文件为MultipartFile
* @throws IOException
*/
@RequestMapping("uploadImage")
@ResponseBody//这里upfile是config.json中图片提交的表单名称
public Map<String,String> uploadImage(@RequestParam("upfile") CommonsMultipartFile upfile,HttpServletRequest request) throws IOException{
//文件原名称
String fileName=upfile.getOriginalFilename();
//为了避免重复简单处理
String nowName=new Date().getTime()+"_" + fileName;
if(!upimage.isEmpty()){
//上传位置路径
String path0 = "D:\\eclipseworkspace\\maven-web\\src\\main\\webapp\\upload\\"+nowName;
//按照路径新建文件
File newFile = new File(path0);
//复制
FileCopyUtils.(upimage.getBytes(), newFile);
}
//返回结果信息(UEditor需要)
Map<String,String> map = new HashMap<String,String >();
//是否上传成功
map.put("state", "SUCCESS");
//现在文件名称
map.put("title", nowName);
//文件原名称
map.put("original", fileName);
//文件类型 .+后缀名
map.put("type", fileName.substring(upfile.getOriginalFilename().lastIndexOf(".")));
//文件路径
map.put("url", "/"+nowName+"/getImage.do");
//文件大小(字节数)
map.put("size", upfile.getSize()+"");

return map;
}
/**
* 读取文件
*/
@RequestMapping("{imgName}/getImage")
public void readImg(@PathVariable("imgName") String imgName, HttpServletResponse response)
throws Exception {
//设置文件的返回类型
response.setContentType("image/*");
//文件路径(windows下是\\,linux下是//,都必须是绝对路径)
String imgPath="D:\\eclipseworkspace\\maven-web\\src\\main\\webapp\\upload\\"+imgName;
//java中用File类来表示一个文件
File image = new File(imgPath);
//测试这个文件路径是否存在(也就是这个文件是否存在)
if (!image.exists()) {
return;
}
//FileUtils.readFileToByteArray(File file)把一个文件转换成字节数组返回
response.getOutputStream().write(FileUtils.readFileToByteArray(image));
//java在使用流时,都会有一个缓冲区,按一种它认为比较高效的方法来发数据:
//把要发的数据先放到缓冲区,缓冲区放满以后再一次性发过去,而不是分开一次一次地发.
//而flush()表示强制将缓冲区中的数据发送出去,不必等到缓冲区满.
response.getOutputStream().flush();
response.getOutputStream().close();
}

㈦ Java SpringBoot本地上传文件到resources目录永久保存下载的最佳实践

在Java SpringBoot项目中,为了实现本地文件上传并永久保存以便前端下载,最佳实践是将文件存储在resources目录下,并结合target/classes目录。以下是具体步骤:

首先,通过ResourceUtils.getURL("classpath:").getPath()获取target/classes目录的绝对路径,前端上传的文件应保存在此目录下的子目录,如upload/logo.jpg,返回的下载地址格式为http://localhost:8080/upload/logo.jpg。



然而,target目录的变动性和不提交到代码仓库会导致文件丢失。这时,将文件保存在resources/upload目录下更为合适,因为这个目录通常会被提交到版本控制。每次上传后,文件会自动同步到target/classes目录,以实现实时访问,但手动编译运行会较为繁琐。



为解决这个问题,可以结合target和resources目录。使用System.getProperty("user.dir")获取项目工作目录,然后拼接资源目录路径。同时,需要检查application.yml、pom.xml和WebMvcConfiguration中的相关配置,确保静态资源正确映射和访问。



当接收前端上传的File对象时,直接保存到第一个目录(如resources/upload),然后使用Spring的FileCopyUtils.方法复制到target/classes目录,以实现文件的持久保存和实时访问。



以下是一些关键代码和配置示例:



  • UploadFileUtil.java

  • application.yml

  • WebMvcConfiguration



在实际操作中,Controller层需要处理文件上传的逻辑,包括接收到File对象,保存到资源目录,并确保配置正确,以便前端能够顺利访问。

㈧ 如何深入 spring mvc

SpringMVC是一个轻量级的MVC框架,SpringMVC由于其轻量级的实现以及与Spring框架的无缝整合等诸多优势,近年来在MVC框架中脱颖而出,受到诸多开发人员的青睐,学习SpringMVC势在必行。

Web环境中使用SpringMVC:SpringMVC提供了可插拔式的框架嵌入形式,将SpirngMVC插入或者从Web项目中卸载只需要简单的修改配置文件即可。

  • 配置前端控制器,SpringMVC的入口程序为一个全局的Servlet,该Servlet拦截指定的一组请求交给SpringMVC框架执行后续的处理操作,在Web.xml中配置如下字段。

  • [java]view plain

  • <!--SpingMVC的前端控制器-->

  • <servlet>

  • <servlet-name>dispatcher</servlet-name>

  • <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>

  • <!--配置SpringMVC的IOC容器-->

  • <init-param>

  • <param-name>contextConfigLocation</param-name>

  • <param-value>/WEB-INF/root-context.xml</param-value>

  • </init-param>

  • <load-on-startup>1</load-on-startup>

  • </servlet>

  • <!--配置拦截所有的请求-->

  • <servlet-mapping>

  • <servlet-name>dispatcher</servlet-name>

  • <url-pattern>/</url-pattern>

  • </servlet-mapping></span></span>

  • 创建SpringMVC IOC容器的配置文件root-context.xml并定义视图解析器,位置/WEB-INF/

  • [java]view plain

  • <!--配置自动扫面的包-->

  • <context:component-scanbase-package="cn.com.xiaofen"/>

  • <!--定义视图解析器-->

  • <bean

  • class="org.springframework.web.servlet.view.InternalResourceViewResolver">

  • <propertyname="prefix"value="/WEB-INF/view/"></property>

  • <propertyname="suffix"value=".jsp"></property>

  • </bean>

  • <!--<mvc:default-servlet-handler/><mvc:annotation-driven/>--></span></span>

  • 定义控制器,SpringMVC中定义方法来响应客户端请求,内存开销更小效率更高。

  • [java]view plain

  • @Controller

  • @RequestMapping("/T")

  • publicclassT{

  • @RequestMapping("/t_1")

  • publicStringt_1(){

  • System.out.println("t_1");

  • return"index";

  • }

  • }

  • 定义视图,根据实际的视图解析器完成相关视图的配置,当前配置视图应该在/WEB-INF/view/下且文件类型为JSP文件,具体的应该在该目录下新建一个名称为index的jsp文件名称。

  • SpringMVC处理请求的工作流:DispatcherServlet作为SpringMVC框架的入口程序,负责调度SpringMVC框架响应用户的请求,如下图为宏观上SpingMVC处理一次请求大概需要经过以下调度过程。

  • 请求进入由前端控制器(DispatcherServlet )拦截。

  • 前端控制器分析请求将请求委托至具体的控制器来处理。

  • 控制器处理请求返回逻辑视图(Model)。

  • 前端控制器得到逻辑视图对象,调度视图解析器,解析视图模版给用户响应。

  • 返回前端控制器。

  • SpringMVC请求流程(部分源码分析):由DispatcherServlet的doService()方法入手,篇幅关系,下文仅列出核心的代码,下文的代码并并保证时间上的顺序性。

  • DispatcherServlet调用doDispatch处理请求。

  • [java]view plain

  • try{

  • /*逻辑视图及上文提到的Model*/

  • ModelAndViewmv=null;

  • ExceptiondispatchException=null;

  • try{

  • /*文件上传预处理*/

  • processedRequest=checkMultipart(request);

  • multipartRequestParsed=(processedRequest!=request);

  • /*确定当前请求的处理者*/

  • mappedHandler=getHandler(processedRequest);

  • /*请求资源未发现*/

  • if(mappedHandler==null||mappedHandler.getHandler()==null){

  • noHandlerFound(processedRequest,response);

  • return;

  • }

  • /*确定当前请求的处理者适配器*/

  • HandlerAdapterha=getHandlerAdapter(mappedHandler.getHandler());

  • //...............

  • /*请求调度前应用的拦截器*/

  • if(!mappedHandler.applyPreHandle(processedRequest,response)){

  • return;

  • }

  • /*调用处理程序*/

  • mv=ha.handle(processedRequest,response,mappedHandler.getHandler());

  • //......

  • /*请求调度后应用的拦截器*/

  • mappedHandler.applyPostHandle(processedRequest,response,mv);

  • }

  • catch(Exceptionex){

  • dispatchException=ex;

  • }

  • /*解析视图给用户响应*/

  • processDispatchResult(processedRequest,response,mappedHandler,mv,dispatchException);

  • }

  • 理解HandlerMapper,一个HandlerMapper代表一个请求到到处理对象的映射,该对象的创建依据是请求响应关系。getHandler方法部分源码分析如下。

  • [java]view plain

  • (HttpServletRequestrequest)throwsException{

  • 遍历查找满足条件的HandlerMapping

  • for(HandlerMappinghm:this.handlerMappings){

  • if(logger.isTraceEnabled()){

  • logger.trace(

  • "Testinghandlermap["+hm+"]inDispatcherServletwithname'"+getServletName()+"'");

  • }

  • HandlerExecutionChainhandler=hm.getHandler(request);

  • if(handler!=null){

  • 存在

  • returnhandler;

  • }

  • }

  • 不存在

  • returnnull;

  • }

  • 理解HandlerAapter,SpringMVC 中通过HandlerAdapter的handler方法来调用实际的处理请求的函数。getHandlerAapter 部分源码如下。

  • [java]view plain

  • (Objecthandler)throwsServletException{

  • for(HandlerAdapterha:this.handlerAdapters){

  • if(logger.isTraceEnabled()){

  • logger.trace("Testinghandleradapter["+ha+"]");

  • }

  • 是否支持处理当前的HandlerMapper

  • if(ha.supports(handler)){

  • returnha;

  • }

  • }

  • 当前的HandlerMapper不能被处理报异常

  • thrownewServletException("Noadapterforhandler["+handler+

  • "]:ortsthishandler");

  • }

  • Model到视图,SpringMVC 中ModelAndView保存了逻辑视图与真实视图的关系,确定了当前请求为用户返回的View,processDispatchResult 源码分析如下。

  • [java]view plain

  • (HttpServletRequestrequest,HttpServletResponseresponse,

  • ,ModelAndViewmv,Exceptionexception)throwsException{

  • booleanerrorView=false;

  • /*处理异常信息*/

  • if(exception!=null){

  • if(){

  • logger.debug("",exception);

  • mv=((ModelAndViewDefiningException)exception).getModelAndView();

  • }

  • else{

  • Objecthandler=(mappedHandler!=null?mappedHandler.getHandler():null);

  • mv=processHandlerException(request,response,handler,exception);

  • errorView=(mv!=null);

  • }

  • }

  • /*渲染视图,返回响应*/

  • if(mv!=null&&!mv.wasCleared()){

  • render(mv,request,response);

  • if(errorView){

  • WebUtils.clearErrorRequestAttributes(request);

  • }

  • }

  • else{

  • if(logger.isDebugEnabled()){

  • logger.debug("'"+getServletName()+

  • "':");

  • }

  • }

  • }

热点内容
phpmysql连接超时 发布:2025-07-03 17:05:09 浏览:795
服务器怎么设置电脑远程端口 发布:2025-07-03 16:28:46 浏览:72
电信无线路由器官方密码是什么 发布:2025-07-03 16:25:00 浏览:773
空间只能申请访问 发布:2025-07-03 16:23:27 浏览:735
华硕天选2air配置如何选择 发布:2025-07-03 16:10:09 浏览:571
asp搜索源码 发布:2025-07-03 15:49:55 浏览:235
医美大数据库 发布:2025-07-03 15:47:07 浏览:357
c语言将二进制转化为十进制 发布:2025-07-03 15:32:47 浏览:988
c语言帮助文档 发布:2025-07-03 15:22:43 浏览:320
双端口存储器在情况下会发生读写冲突 发布:2025-07-03 15:12:54 浏览:271