web开发中常用的上传下载代码

简介:

1、常用上传代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
/**
     
      * @param upload  上传文件
      * @param reaName 名称
      * @param uploadType 类型
      * @return
      * @throws IOException
      */
     public  String uploadFile(File upload, String reaName,
             String uploadType)  throws  IOException {
         String uploadpath= "D:/csg" ;
         String uploadpath2= "/upload/image/" ;
         String fileDir = uploadpath +uploadpath2;
         OutputStream os =  null ;
         InputStream is =  null ;
         File file= new  File(fileDir);
         if (!file.exists()){
             file.mkdirs();
         }
         try  {
             is =  new  FileInputStream(upload); 
             os =  new  FileOutputStream(fileDir + reaName);
             int  bytesRead =  0 ;
             byte [] buffer =  new  byte [ 8192 ];
             while  ((bytesRead = is.read(buffer,  0 8192 )) != - 1 )
                 os.write(buffer,  0 , bytesRead);
         catch  (IOException e) {
             e.printStackTrace();
         finally  {
             if  (os !=  null ) {
                 os.close();
             }
             if  (is !=  null ) {
                 is.close();
             }
         }
         return  uploadpath2+reaName;
     }

此方法基本上可以上传所有附件

2、上传缩略图代码(按一定比例缩放)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
public  String uploadFile(File upload, String reaName,
             String uploadType)  throws  IOException {
         String uploadpath= "D:/csg" ;
         String uploadpath2= "/upload/image/small/" ;
         String fileDir = uploadpath +uploadpath2;
         InputStream is =  null ;
         BufferedImage bis =  null ;
         is =  new  FileInputStream(upload); 
         File file= new  File(fileDir);
         if (!file.exists()){
             file.mkdirs();
         }
         try  {
             File reviaryFile =  new  File(fileDir +  "small20130606.jpg" );
             AffineTransform transform =  new  AffineTransform();
             bis = ImageIO.read(is);
             int  w = bis.getWidth();
             int  h = bis.getHeight();
             int  newWidth = ( int ) (w *  0 .1D);
             int  newHight = ( int ) (h *  0 .1D);
             transform.setToScale( 0.1 0.1 );
             AffineTransformOp ato =  new  AffineTransformOp(transform,  null );
             BufferedImage bid =  new  BufferedImage(newWidth, newHight,  5 );
             ato.filter(bis, bid);
             ImageIO.write(bid,  "jpg" , reviaryFile);
         catch  (Exception e) {
             System.out.println( "上传缩略图失败" );
         } finally {
             if  (is !=  null ) {
                 is.close();
             }
         }
         return  fileDir;
     }

3、上传缩略图代码(指定比例缩放)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
public  String uploadFile(File upload, String reaName,
             String uploadType)  throws  IOException {
         String uploadpath= "D:/csg" ;
         String uploadpath2= "/upload/image/small/" ;
         String fileDir = uploadpath +uploadpath2;
         InputStream is =  null ;
         BufferedImage bis =  null ;
          Image srcUpload =  null ;
         is =  new  FileInputStream(upload); 
         File file= new  File(fileDir);
         if (!file.exists()){
             file.mkdirs();
         }
         try  {
              srcUpload = ImageIO.read(is);
              int  newWidth =  0 , newHight =  0 ;
              int  w = srcUpload.getWidth( null );
              int  h = srcUpload.getHeight( null );
              if  (w >= h) {
                  newWidth =  90 ;
                  newHight = h *  90  / w;
              else  {
                  newHight =  90 ;
                  newWidth = w *  90  / h;
              }
              BufferedImage image =  new  BufferedImage(newWidth, newHight,
                      BufferedImage.TYPE_3BYTE_BGR);
              image.getGraphics().drawImage(srcUpload.getScaledInstance(newWidth, newHight, Image.SCALE_SMOOTH),  0 0 null );
              FileOutputStream out =  new  FileOutputStream(fileDir +  "/"  "small123.jpg" );
              JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(out);
              encoder.encode(image);
              image.flush();
              out.flush();
              out.close();
              System.gc();
         catch  (Exception e) {
             System.out.println( "上传缩略图失败" );
         } finally {
             if  (is !=  null ) {
                 is.close();
             }
         }
         return  fileDir;
     }


4、常用下载代码(根据路劲下载)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
Dao dao =  new  Dao();
         UploadFiles files = dao.querykById(id);
         String uploadpath =  "D:/csg" ;
         String path = uploadpath + files.getPath();
         InputStream bis =  null ;
         OutputStream bos =  null ;
         try  {
             File fileInstance =  new  File(path);
             if  (!fileInstance.exists()) {
                 System.out.println( "---------下载文件不存在,请联系管理员-------------" );
             else  {
                 HttpServletResponse response = (HttpServletResponse) ActionContext
                         .getContext().get(ServletActionContext.HTTP_RESPONSE);
                 bis =  new  BufferedInputStream( new  FileInputStream(fileInstance));
                 bos =  new  BufferedOutputStream(response.getOutputStream());
 
                 response.setContentType( "application/octet-stream;charset=UTF-8" );
                 response.setHeader( "Content-Disposition" , "attachment;filename=" + URLEncoder.encode(files.getUploadRealName(), "UTF-8" ));
                 byte [] buff =  new  byte [ 1024 ];
                 int  bytesRead;
                 while  (- 1  != (bytesRead = bis.read(buff,  0 , buff.length))) {
                     // 将buff中的数据写到客户端的内存
                     bos.write(buff,  0 , bytesRead);
                 }
                 bos.close();
                 bis.close();
             }
         catch  (IOException e) {
             System.out.println( "下载失败" );
         finally  {
             bos.close();
             bis.close();
         }
         return  null ;
     }


此方法基本可以下载所有附件

5、直接下载(无路径,后台生成之后直接下载适合Excel,word,pdf等)

Excel:

1
2
3
4
5
6
7
8
public  static  void  export(HttpServletResponse response,Workbook wb,String fileName) throws  Exception{
         response.setHeader( "Content-Disposition" "attachment;filename=" + new  String(fileName.getBytes( "utf-8" ), "iso8859-1" ));
         response.setContentType( "application/ynd.ms-excel;charset=UTF-8" );
         OutputStream out=response.getOutputStream();
         wb.write(out);
         out.flush();
         out.close();
     }

PDF:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
ByteArrayOutputStream ba =  new  ByteArrayOutputStream();
PdfWriter writer = PdfWriter.getInstance(document, ba);
// 打开文档,生成页头页脚等信息在open之前
document.open();
//省略n行生成table的代码
document.add(table);
document.close();
// 关闭文本,释放资源
HttpServletResponse response= super .getResponse();
response.setContentLength(ba.size());
response.setContentType( "application/octet-stream;charset=UTF-8" );
String str= "审核表.pdf" ;
response.setHeader( "Content-Disposition" "attachment;filename=" + new  String(str.getBytes( "utf-8" ), "iso8859-1" ));
ServletOutputStream out = response.getOutputStream();
ba.writeTo(out);
out.flush();

ps:直接下载就是在生成之后直接将文本信息传进来,就行了。而Excel这个例子是需要将生成之后的Workbook返回去,传给export方法!PDF,Excel,word直接下载方法基本类似!


上传下载说白了,其实就是输入,输出流的问题!了解输入输出流的本质这些基本上就不是问题了!


以上代码都是经本人测试之后拷贝出来直接可以使用!










本文转自 小夜的传说 51CTO博客,原文链接:http://blog.51cto.com/1936625305/1423041,如需转载请自行联系原作者
目录
相关文章
|
3月前
|
XML JSON API
ServiceStack:不仅仅是一个高性能Web API和微服务框架,更是一站式解决方案——深入解析其多协议支持及简便开发流程,带您体验前所未有的.NET开发效率革命
【10月更文挑战第9天】ServiceStack 是一个高性能的 Web API 和微服务框架,支持 JSON、XML、CSV 等多种数据格式。它简化了 .NET 应用的开发流程,提供了直观的 RESTful 服务构建方式。ServiceStack 支持高并发请求和复杂业务逻辑,安装简单,通过 NuGet 包管理器即可快速集成。示例代码展示了如何创建一个返回当前日期的简单服务,包括定义请求和响应 DTO、实现服务逻辑、配置路由和宿主。ServiceStack 还支持 WebSocket、SignalR 等实时通信协议,具备自动验证、自动过滤器等丰富功能,适合快速搭建高性能、可扩展的服务端应用。
171 3
|
28天前
|
前端开发 安全 JavaScript
2025年,Web3开发学习路线全指南
本文提供了一条针对Dapp应用开发的学习路线,涵盖了Web3领域的重要技术栈,如区块链基础、以太坊技术、Solidity编程、智能合约开发及安全、web3.js和ethers.js库的使用、Truffle框架等。文章首先分析了国内区块链企业的技术需求,随后详细介绍了每个技术点的学习资源和方法,旨在帮助初学者系统地掌握Dapp开发所需的知识和技能。
2025年,Web3开发学习路线全指南
|
2月前
|
设计模式 前端开发 数据库
Python Web开发:Django框架下的全栈开发实战
【10月更文挑战第27天】本文介绍了Django框架在Python Web开发中的应用,涵盖了Django与Flask等框架的比较、项目结构、模型、视图、模板和URL配置等内容,并展示了实际代码示例,帮助读者快速掌握Django全栈开发的核心技术。
199 45
|
2月前
|
存储 前端开发 JavaScript
如何在项目中高效地进行 Web 组件化开发
高效地进行 Web 组件化开发需要从多个方面入手,通过明确目标、合理规划、规范开发、加强测试等一系列措施,实现组件的高效管理和利用,从而提高项目的整体开发效率和质量,为用户提供更好的体验。
34 7
|
1月前
|
开发框架 .NET PHP
ASP.NET Web Pages - 添加 Razor 代码
ASP.NET Web Pages 使用 Razor 标记添加服务器端代码,支持 C# 和 Visual Basic。Razor 语法简洁易学,类似于 ASP 和 PHP。例如,在网页中加入 `@DateTime.Now` 可以实时显示当前时间。
|
2月前
|
开发框架 搜索推荐 数据可视化
Django框架适合开发哪种类型的Web应用程序?
Django 框架凭借其强大的功能、稳定性和可扩展性,几乎可以适应各种类型的 Web 应用程序开发需求。无论是简单的网站还是复杂的企业级系统,Django 都能提供可靠的支持,帮助开发者快速构建高质量的应用。同时,其活跃的社区和丰富的资源也为开发者在项目实施过程中提供了有力的保障。
|
2月前
|
开发框架 JavaScript 前端开发
TypeScript 是一种静态类型的编程语言,它扩展了 JavaScript,为 Web 开发带来了强大的类型系统、组件化开发支持、与主流框架的无缝集成、大型项目管理能力和提升开发体验等多方面优势
TypeScript 是一种静态类型的编程语言,它扩展了 JavaScript,为 Web 开发带来了强大的类型系统、组件化开发支持、与主流框架的无缝集成、大型项目管理能力和提升开发体验等多方面优势。通过明确的类型定义,TypeScript 能够在编码阶段发现潜在错误,提高代码质量;支持组件的清晰定义与复用,增强代码的可维护性;与 React、Vue 等框架结合,提供更佳的开发体验;适用于大型项目,优化代码结构和性能。随着 Web 技术的发展,TypeScript 的应用前景广阔,将继续引领 Web 开发的新趋势。
42 2
|
3月前
|
计算机视觉 Python
Flask学习笔记(六):基于Flask的摄像头-web显示代码(可直接使用)
这篇文章是关于如何使用Flask框架结合OpenCV库,通过电脑摄像头实现视频流在网页上的实时显示,并提供了单摄像头和多摄像头的实现方法。
132 2
Flask学习笔记(六):基于Flask的摄像头-web显示代码(可直接使用)
|
2月前
|
前端开发 API 开发者
Python Web开发者必看!AJAX、Fetch API实战技巧,让前后端交互如丝般顺滑!
在Web开发中,前后端的高效交互是提升用户体验的关键。本文通过一个基于Flask框架的博客系统实战案例,详细介绍了如何使用AJAX和Fetch API实现不刷新页面查看评论的功能。从后端路由设置到前端请求处理,全面展示了这两种技术的应用技巧,帮助Python Web开发者提升项目质量和开发效率。
57 1
|
2月前
|
XML 安全 PHP
PHP与SOAP Web服务开发:基础与进阶教程
本文介绍了PHP与SOAP Web服务的基础和进阶知识,涵盖SOAP的基本概念、PHP中的SoapServer和SoapClient类的使用方法,以及服务端和客户端的开发示例。此外,还探讨了安全性、性能优化等高级主题,帮助开发者掌握更高效的Web服务开发技巧。