项目里面的一个下载模板并上传例子

本文介绍了如何使用JFinal框架实现Excel文件的上传与数据读取。通过设置form的enctype属性并使用UploadFile获取上传文件,利用WorkbookFactory读取Excel内容,并展示了如何将数据填充到指定HTML表单及通过SQL更新数据库的具体步骤。

利用JFiNAL 框架

首先一个html  ,简单的form 里面两个input  ,form action 为具体文件的函数名   /updata/importExc    注意此时form 里有个属性 enctype  为了上传文件而准备的。

下载直接一个链接即可  注意路径为webroot下的,action就是java src里面的文件,无关乎包名。

UploadFile uploadfile = getFile("文件名");                       File file = uploadfile.getFile();   //获得上传来的文件   此处为一个excel

InputStream is = new FileInputStream(file);   Workbook wb = WorkbookFactory.create(is);   Sheet sheet = wb.getSheetAt(0); Integer row_num = sheet.getLastRowNum() + 1;

//创建了一个跟模板一样的excel,并可以从中获取模板中的值,

cell.setCellType(Cell.CELL_TYPE_STRING);   设置了excel 的类型,防止数据读取的时候出错

设置属性:setAttr("no",row.getCell(31).getStringCellValue());     // 最后render("XX.html")   在XX.html中利用jquery 获取到相应的文本框的并将从excel中得到的值读进去,

content.jQuery("input[name='no']").val('${no}');   //但是不知道content是具体指的那个iframe里面的内容,找不到相应的html文档。


还有一种是得到了excel里面的值后,进行sql语句的更新,jfinal里面用到Db.updata(sql)

### 创建带有用户认证和文件处理功能的Web应用程序 为了创建一个具有登录注册以及文件上传下载功能的Java Web应用,可以采用Spring Boot架配合Maven来简化开发过程。下面介绍具体实现方法。 #### 使用Spring Initializr初始化项目结构 访问[spring.io/initializr](https://start.spring.io/)在线工具配置如下选项: - Project: Maven Project - Language: Java - Spring Boot版本选择最新稳定版 - 添加依赖项:`Spring Web`, `Thymeleaf`(用于前端模板), `Spring Security`(提供安全特性如身份验证)[^1], 和 `Spring Boot DevTools` 完成设置后点击“Generate”,下载解压得到的基础工程即包含了所需的基本目录布局与POM文件定义。 #### 配置pom.xml引入额外组件支持 编辑项目的`pom.xml`加入对于表单数据绑定(`spring-boot-starter-thymeleaf`)、数据库操作(JPA/Hibernate)的支持,指定MySQL驱动作为持久层存储方案之一: ```xml <dependencies> <!-- 其他默认生成的内容 --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-jpa</artifactId> </dependency> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <scope>runtime</scope> </dependency> <dependency> <groupId>commons-fileupload</groupId> <artifactId>commons-fileupload</artifactId> <version>1.4</version> </dependency> <dependency> <groupId>javax.servlet</groupId> <artifactId>servlet-api</artifactId> <version>2.5</version> <scope>provided</scope> </dependency> </dependencies> ``` 上述代码片段展示了如何通过修改`pom.xml`文件向项目添加必要的库以支持JPA实体映射到关系型数据库表,同时加入了Apache Commons FileUpload库以便于处理HTTP POST请求中的multipart/form-data编码格式的数据流——这对于实现文件上传至关重要。 #### 实现用户认证模块 基于Spring Security可快速搭建起一套完整的账号管理体系,包括但不限于用户名密码校验逻辑、记住我服务、防止暴力破解尝试等功能。针对本案例需求,在`src/main/java/com/example/demo/config/WebSecurityConfig.java`内编写自定义的安全配置类: ```java @Configuration @EnableWebSecurity public class WebSecurityConfig extends WebSecurityConfigurerAdapter { @Autowired private UserDetailsService userDetailsService; protected void configure(HttpSecurity http) throws Exception { http .authorizeRequests() .antMatchers("/register", "/css/**").permitAll() // 注册页面无需鉴权即可访问 .anyRequest().authenticated() .and() .formLogin() .loginPage("/login") // 自定义登录页路径 .defaultSuccessUrl("/")// 登录成功后的跳转地址 .permitAll() .and() .logout() .permitAll(); } @Override protected void configure(AuthenticationManagerBuilder auth) throws Exception { auth.userDetailsService(userDetailsService).passwordEncoder(new BCryptPasswordEncoder()); } } ``` 此段程序说明了怎样利用Spring Security提供的API定制化Http请求过滤链路规则集,确保只有经过合法授权的操作才能被执行;同时也指定了具体的登录界面位置及退出动作行为模式。 #### 开发文件上传下载接口 在控制器层面设计RESTful风格的服务端点负责接收客户端提交过来的二进制资料保存至服务器本地磁盘或云储存空间;反之亦然地响应GET类型的获取资源诉求时返回对应的多媒体对象给浏览器展示出来。以下是部分核心源码示例: ```java @RestController @RequestMapping("/files") @RequiredArgsConstructor(onConstructor_ = {@Autowired}) public class FileController { private final Path fileStorageLocation; public ResponseEntity<Resource> downloadFile(@PathVariable String fileName){ try{ Resource resource=loadFileAsResource(fileName); return ResponseEntity.ok() .contentType(MediaType.APPLICATION_OCTET_STREAM) .header(HttpHeaders.CONTENT_DISPOSITION,"attachment; filename=\"" +resource.getFilename()+"\"") .body(resource); }catch (Exception e){ return new ResponseEntity<>(HttpStatus.NOT_FOUND); } } @PostMapping(value="/upload", consumes="multipart/form-data") public UploadResponse uploadSingleFile(@RequestParam("file") MultipartFile multipartFile, BindingResult result){ if(multipartFile.isEmpty()){ throw new ResponseStatusException(HttpStatus.BAD_REQUEST,"Failed to store empty file."); } try{ Files.copy( multipartFile.getInputStream(), this.fileStorageLocation.resolve(multipartFile.getOriginalFilename()), StandardCopyOption.REPLACE_EXISTING ); return new UploadResponse(multipartFile.getOriginalFilename(), "success"); } catch(IOException ex){ throw new ResponseStatusException(HttpStatus.INTERNAL_SERVER_ERROR, "Could not store the file. Error: "+ex.getMessage()); } } } ``` 这段代码实现了两个主要的功能函数:一个是允许用户从远程站点拉取特定名称下的文档实例;另一个则是用来解析由HTML `<input type='file'>`控件传递来的临时文件句柄参数,进而将其永久落地存放在预设好的目标文件夹下。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值