`
bruce198
  • 浏览: 233294 次
  • 性别: Icon_minigender_1
社区版块
存档分类
最新评论

文件上传原理简单实现

    博客分类:
  • java
阅读更多

      要实现文件上载,我们必须先了解上载文件的HTTP请求。下面这个简单的应用示范了如何上载文件以及把HTTP请求的原始数据写入文件。用文本编辑器查看该文件即可了解请求的格式,在此基础上我们就可以提取出上载文件的名字、文件内容以及原本混合在一起的其他信息。

在这里我们写一个简单的html页面up.html,提供一个表单,用户从这里选择文件并把文件上载到服务器。

注意,<form>标记有一个enctype属性,属性值是"MULTIPART/FORM-DATA"。还有个type为file的输入框是用来选择上传文件的。

表单的action属性值是upjsp.jsp,这是将请求发送给upjsp.jsp文件。upjsp.jsp调用了名为UpBean的JavaBean。

程序如下:下面是UpBean的实现代码:

  1. <jsp:useBean id="TheBean" scope="page" class="UpBean " />    
  2. <%    
  3. TheBean.doUpload(request);    
  4. %>    

 

java 代码
  1. import java.io.*;   
  2. import javax.servlet.http.HttpServletRequest;   
  3. import javax.servlet.http.HttpServletResponse;   
  4. import javax.servlet.ServletInputStream;   
  5.   
  6. public class UpBean {   
  7.   
  8.     public void doUpload(HttpServletRequest request) throws  
  9.   
  10.     IOException {   
  11.         PrintWriter pw = new PrintWriter(   
  12.         new BufferedWriter(new FileWriter("test.txt")));   
  13.         ServletInputStream in = request.getInputStream();   
  14.         int i = in.read();   
  15.         while (i != -1) {   
  16.             pw.print((char) i);   
  17.             i = in.read();   
  18.         }   
  19.         pw.close();   
  20.     }   
  21.   
  22. }  

 

这个JavaBean把HttpServletRequest对象的表单原始数据写入test.txt文件.

选择上传一个文本或者网页文件。点击“上载”按钮之后,表单就发送给了upjsp.jsp文件,一起发送的还有上传的文件。upjsp.jsp文件不会向浏览器发送任何应答内容,但它会生成一个test.txt文件。打开test.txt文件,我们可以看到上传文件的内容和一些上传的信息了。

  1. <html>    
  2.   
  3. <head>    
  4. <title>文件上载</title>    
  5. </head>    
  6.   
  7.     <body>    
  8.        
  9.         <form action="upjsp.jsp" enctype="MULTIPART/FORM-DATA" method=post>    
  10.                    
  11.             <br />     
  12.             公司: <input type="text" name="company" />    
  13.             <br />     
  14.             选择要上载的文件 <input type="file" name="filename" />    
  15.             <br />    
  16.                
  17.             <input type="submit" value="上载" />    
  18.            
  19.         </form>    
  20.        
  21.     </body>    
  22.   
  23. </html>   
分享到:
评论

相关推荐

    java 编写文件上传类简单易用

    本文将从文件传输的基本原理入手,分析如何用 java进行文件的上传,并提出解决方案。 一、基本原理 通过 HTML 上载文件的基本流程如下图所示。浏览器端提供了供用户选择提交内容的界面(通常是一个表单),在用户...

    ASP.NET+AJAX实现进度条上传文件

    该程序采用了jquery框架,实现了小文件上传,不超过80Mb,可以在web.config文件中进行相应的配置,但是有个最大值,具体需要查看msdn,下一篇文章我将会实现大文件上传,下一篇文章估计得过段时间,因为接下来这几天...

    Java实现文件的上传下载

    该代码是一个使用Java开发的上传下载的一个demo,一共有两种方法,第一种是使用最基础的IO流进行文件的上传,可以了解一下原理。第二种是使用apache的commons-IO包进行文件的上传,其实只要了解了这两种上传文件的...

    php + webuploader实现超大文件上传分片上传断点续传(20g+)

    php实现大文件上传分片上传断点续传, 本人测试2gb有效!!! 该项目核心就是文件分块上传。前后端要高度配合,需要双方约定好一些数据,才能完成大文件分块,我们在项目中要重点解决的以下问题。 * 如何分片; * 如何...

    C#实现文件的上传下载

    该代码是一个使用C#开发的上传下载的一个demo,一共有两种方法,第一种是使用最基础的IO流进行文件的上传,可以了解一下原理。第二种是使用apache的commons-IO包进行文件的上传,其实只要了解了这两种上传文件的机制...

    PHP实现批量上传单个文件

    这时,我们不禁会面临一个问题,使用菜刀一个个上传显得太慢,那么如何快速的实现文件的批量上传呢?本文给大家介绍基于php如何实现这类需求。 0×01 原理分析 首先,我们必须了解菜刀是如何通过一句话木马来实现web...

    JAVA中使用FTPClient实现文件上传下载

    在JAVA程序中,经常需要和FTP打交道,比如向FTP服务器上传文件、下载文件,本文简单介绍如何利用jakarta commons中的FTPClient(在commons-net包中)实现上传下载文件。  一、上传文件  原理不介绍了,大家直接...

    Ajax异步文件上传与NodeJS express服务端处理

    为了避免在实现简单的异步文件上传功能时候引入一个第三方库文件的尴尬情形(库文件可能造成多余的开销,拉低应用加载速度,尤其是在引入库文件之后仅使用其中一两个功能的情况下,性价比极低),最近了解了一下文件...

    jQuery Ajax文件上传(php)

    在开始之前,我觉得是有必要把通WEB上传文件的原理简单说一下的。实际上,在这里不管是PHP,JSP,还是ASP处理上传的文件,其实都是WEB早已把文件上传到服务器了,我们只是运用上传处理函数来处理上传的文件。而处理...

    真正的上传图片处理原理

    该文档中包括了对简单图片的上传,多个文件同时的上传,还有防止有人欺骗系统更改文件后缀名作为图片来上传的验证,还有对图片添加水印效果的实现。

    Android Retrofit实现多图片/文件、图文上传功能

    什么是 Retrofit ? Retrofit是Square开发的一个Android和Java的REST客户端库。...本文只是从使用上解析Retrofit实现多图片/文件、图文上传的功能。 二、概念介绍 1)注解@Multipart 从字面上理解就是与多媒体

    蓝奏云盘v3.4.2突破限制上传多功能

    支持任意格式文件上传,上传之后会随机添加后缀,下载完成后删除就可以了4.可以同步资源,类似于转存,就是可以将别人用蓝奏云分享的文件同步到自己盘里面,原理就是先下载再上传,然后删除下载文件,当然,也可以用...

    用js+canvas实现文件上传以及换头像,边框

    通过DI,我们可以实现组件之间的解耦,使得代码更加模块化、可维护。在学习的过程中,我们共同体会到了DI带来的便利,以及如何在项目中合理地使用它。 接下来是Spring Boot。这个模块的出现,极大地简化了Spring...

    Asp.Net 无刷新文件上传并显示进度条的实现方法及思路

    本篇将阐述通过Html,IHttpHandler和 IHttpAsyncHandler实现文件上传和上传进度的原理,希望对你有多帮助。 效果图: 本文涉及到的知识点:1.前台用到Html,Ajax,JQuery,JQuery UI 2.后台用到一般处理程序...

    Asp.net MVC中使用JQuery插件ajaxFileUpload上传文件

    ajaxFileUpload插件是一个非常简单的基于Jquery的异步上传文件的插件,使用过程中发现很多与这个同名的,基于原始版本基础之上修改过的插件,文件版本比较多,我把我自己使用的ajaxFileUpload文件上传到博客园上了,...

    使用ajaxfileupload.js实现ajax上传文件php版

    无论是PHP,还是其他的服务端脚本都提供了文件上传功能,实现起来也比较简单。而利用JavaScript来配合,即可实现Ajax方式的文件上传。虽然jQuery本身没有提供这样的简化函数,但有不少插件可以实现。其中,Phpletter...

    蓝奏云盘v3.4.2突破限制上传多功能.rar

    支持任意格式文件上传,上传之后会随机添加后缀,下载完成后删除就可以了4.可以同步资源,类似于转存,就是可以将别人用蓝奏云分享的文件同步到自己盘里面,原理就是先下载再上传,然后删除下载文件,当然,也可以用...

    ProgressManager-一行代码实现 Okhttp,Retrofit,Glide 下载上传进度监听.zip

    IntroductionProgressManager 一行代码即可监听 App 中所有网络链接的上传以及下载进度,包括 Glide 的图片加载进度,实现原理类似 EventBus,你可在 App 中的任何地方,将多个监听器,以 Url 地址作为标识符,...

    南开大学计算机学院“编译系统原理”课程作业,最终实现利用yacc和lex工具,完成一个简单的c编译器+源代码+文档说明

    南开大学计算机学院“编译系统原理”课程作业,最终实现利用yacc和lex工具,完成一个简单的c编译器+源代码+文档说明 - 小白不懂运行,下载完可以私聊问,可远程教学 该资源内项目源码是个人的课程设计,代码都测试ok...

    php+iframe实现隐藏无刷新上传文件

    首先ajax不能上传文件,这误导了我有段时间,今晚睡不着就照着说明做了个无刷新上传文件 其实原理很简单 复制代码 代码如下: &lt;form enctype=”multipart/form-data” method=”POST” target=”upload” action=...

Global site tag (gtag.js) - Google Analytics