Springmvc学习-Springmvc07-文件的上传和下载

本文详细介绍了在SpringMVC框架中实现多文件上传和下载的方法。包括配置文件上传解析器、创建上传表单、服务端文件保存及下载响应头设置等关键步骤。

Springmvc07-文件的上传和下载

1. 多文件的上传(客户端上传至服务端)
  • 在spring里注册文件上传解析器。
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xmlns:context="http://www.springframework.org/schema/context"
	xmlns:mvc="http://www.springframework.org/schema/mvc"
	xmlns:tx="http://www.springframework.org/schema/tx"
	xmlns:aop="http://www.springframework.org/schema/aop"
	xsi:schemaLocation="
        http://www.springframework.org/schema/beans 
        http://www.springframework.org/schema/beans/spring-beans.xsd
        http://www.springframework.org/schema/tx 
        http://www.springframework.org/schema/tx/spring-tx.xsd
        http://www.springframework.org/schema/aop 
        http://www.springframework.org/schema/aop/spring-aop.xsd
        http://www.springframework.org/schema/mvc
        http://www.springframework.org/schema/mvc/spring-mvc.xsd
        http://www.springframework.org/schema/context 
        http://www.springframework.org/schema/context/spring-context.xsd">

	<!-- 注册组件扫描器 -->
	<context:component-scan
		base-package="com.caorui.handlers"></context:component-scan>
	<!-- 注册注解驱动 -->
	<mvc:annotation-driven />
	<!-- 注册视图解析器 -->
	<bean
		class="org.springframework.web.servlet.view.InternalResourceViewResolver">
		<property name="prefix" value="/jsp/"></property>
		<property name="suffix" value=".jsp"></property>
	</bean>
	<!-- 注册文件上传解析器 -->
	<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
		<property name="defaultEncoding" value="utf-8"></property>  <!-- 设置上传文件乱码的问题 -->
	</bean>
	<!-- 静态资源无法访问的第二种解决方案 -->
	<!-- <mvc:default-servlet-handler/> -->
	<!-- 静态资源无法访问的第三种解决方案 -->
	<mvc:resources location="/images/" mapping="/images/**"></mvc:resources>

</beans>
  • jsp页面添加文件上传的表单
<form action="springmvc/fileUpload" method="post" enctype="multipart/form-data">
		<input type="file" name="imgs"><br>
		<input type="file" name="imgs"><br>
		<input type="submit" name="上传">
	</form>
  • 在controller中写服务端文件保存
package com.caorui.handlers;



import java.io.File;
import java.io.IOException;

import javax.servlet.http.HttpSession;

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;

//后端控制器
@Controller //该注解表示将当前类给spring容器管理
@RequestMapping("/springmvc")//该注解起了限定范围的作用
public class MyController {

	@RequestMapping("/fileUpload")  
	public String fileUpload(@RequestParam MultipartFile[] imgs, HttpSession session) { //spring自带类型转换 提交的表单name值和方法的参数值一致才能接受,不一致不能接受
		String path = session.getServletContext().getRealPath("/");
		System.out.println(path);
		for (MultipartFile img : imgs) {
			String fileName = img.getOriginalFilename();
			File file = new File(path, fileName);
			try {
				img.transferTo(file);
			} catch (IllegalStateException e) {
				e.printStackTrace();
			} catch (IOException e) {
				e.printStackTrace();
			}
			
		}

		return "welcome";
	}

}


2. 多文件的下载(客户端从服务端下载)
  • 不需要指定文件上传解析器
  • jsp页面
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
	<a href="${pageContext.request.contextPath}/springmvc/fileDownload">点击下载!</a>
</body>
</html>
  • controller
package com.caorui.handlers;



import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;

import javax.servlet.http.HttpSession;

import org.springframework.http.HttpHeaders;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
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;

//后端控制器
@Controller //该注解表示将当前类给spring容器管理
@RequestMapping("/springmvc")//该注解起了限定范围的作用
public class MyController {

	@RequestMapping("/fileDownload")  
	public ResponseEntity<byte[]> fileDownload() throws IOException{
		//指定下载文件
		File file = new File("d:/美女.png");
		FileInputStream is = new FileInputStream(file);
		//创建字节数组,并且设置数组大小为预估文件字节数
		byte[] body = new byte[is.available()];
		//将输入流中的字符存储到缓存数组中
		is.read(body);
		//获取下载显示的文件名, 并且解决中文乱码的问题
		String name = file.getName();
		String downLoadFileName = new String(name.getBytes("utf-8"), "ISO-8859-1");
		//设置http响应头的信息,并且通知浏览器一以附件的形式进行下载
		HttpHeaders httpHeaders = new HttpHeaders();
		httpHeaders.add("Content-Disposition", "attachment;filename="+downLoadFileName);
		//设置http响应状态信息
		HttpStatus status = HttpStatus.OK;
		ResponseEntity<byte[]> responseEntity = new ResponseEntity<>(body, httpHeaders, status);
		return responseEntity;
		
		
	}

}

一、 内容概要 本资源提供了一个完整的“金属板材压弯成型”非线性仿真案例,基于ABAQUS/Explicit或Standard求解器完成。案例精确模拟了模具(凸模、凹模)与金属板材之间的接触、压合过程,直至板材发生塑性弯曲成型。 模型特点:包含完整的模具-工件装配体,定义了刚体约束、通用接触(或面面接触)及摩擦系数。 材料定义:金属板材采用弹塑性材料模型,定义了完整的屈服强度、塑性应变等真实应力-应变数据。 关键结果:提供了成型过程中的板材应力(Mises应力)、塑性应变(PE)、厚度变化​ 云图,以及模具受力(接触力)曲线,完整再现了压弯工艺的力学状态。 二、 适用人群 CAE工程师/工艺工程师:从事钣金冲压、模具设计、金属成型工艺分析与优化的专业人员。 高校师生:学习ABAQUS非线性分析、金属塑性成形理论,或从事相关课题研究的硕士/博士生。 结构设计工程师:需要评估钣金件可制造性(DFM)或预测成型回弹的设计人员。 三、 使用场景及目标 学习目标: 掌握在ABAQUS中设置金属塑性成形仿真的全流程,包括材料定义、复杂接触设置、边界条件与载荷步。 学习如何调试分析大变形、非线性接触问题的收敛性技巧。 理解如何通过仿真预测成型缺陷(如减薄、破裂、回弹),并与理论或实验进行对比验证。 应用价值:本案例的建模方法与分析思路可直接应用于汽车覆盖件、电器外壳、结构件等钣金产品的冲压工艺开发与模具设计优化,减少试模成本。 四、 其他说明 资源包内包含参数化的INP文件、CAE模型文件、材料数据参考及一份简要的操作要点说明文档。INP文件便于用户直接修改关键参数(如压边力、摩擦系数、行程)进行自主研究。 建议使用ABAQUS 2022或更高版本打开。显式动力学分析(如用Explicit)对计算资源有一定要求。 本案例为教学与工程参考目的提供,用户可基于此框架进行拓展,应用于V型弯曲
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值