新书推介:《语义网技术体系》
作者:瞿裕忠,胡伟,程龚
   XML论坛     W3CHINA.ORG讨论区     >>计算机科学论坛<<     SOAChina论坛     Blog     开放翻译计划     新浪微博  
 
  • 首页
  • 登录
  • 注册
  • 软件下载
  • 资料下载
  • 核心成员
  • 帮助
  •   Add to Google

    >> 本版讨论Java, J2SE, J2ME, J2EE, 以及Eclipse, NetBeans, JBuilder等Java开发环境,还有JSP, JavaServlet, JavaBean, EJB以及struts, hibernate, spring, webwork2, Java 3D, JOGL等相关技术。
    [返回] 计算机科学论坛计算机技术与应用『 Java/Eclipse 』 → UFOUpload组件实现文件上传 查看新帖用户列表

      发表一个新主题  发表一个新投票  回复主题  (订阅本版) 您是本帖的第 4796 个阅读者浏览上一篇主题  刷新本主题   树形显示贴子 浏览下一篇主题
     * 贴子主题: UFOUpload组件实现文件上传 举报  打印  推荐  IE收藏夹 
       本主题类别:     
     nbsven 帅哥哟,离线,有人找我吗?狮子座1984-8-7
      
      
      等级:大一新生
      文章:3
      积分:62
      门派:XML.ORG.CN
      注册:2009/4/26

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给nbsven发送一个短消息 把nbsven加入好友 查看nbsven的个人资料 搜索nbsven在『 Java/Eclipse 』的所有贴子 引用回复这个贴子 回复这个贴子 查看nbsven的博客楼主
    发贴心情 UFOUpload组件实现文件上传

    UFOUpload实现文件上传

    1、UFOUpload介绍:UFOUpload组件是一个运行在Jsp Web Server上的程序,它解析contentType为"multipart/"的Http连接,实现文件上传的组件。

    2、如何使用UFOUpload组件?
       以UFO Web Server为例(其它Jsp Web Server类似),把UFOUpload_V100.jar放到\lib目录下;即可使用。

    3、下面举例介绍如何使用它的文件上传功能。
      
    示例1
    getString()得到表单数据内容,isFormField()可判断是否为普通的表单项。

    UFOdemo1.html

    <html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=GB18030">
        <title>File upload</title>
    </head>
    <body>
           //必须是multipart的表单数据。
        <form name="myform" action="UFOdemo1.jsp" method="post"
           enctype="multipart/form-data">
           Your name: <br>
           <input type="text" name="name" size="15"><br>
           File:<br>
           <input type="file" name="myfile"><br>
           <br>
           <input type="submit" name="submit" value="Commit">
        </form>
    </body>
    </html>

    UFOdemo1.jsp

    <%@ page language="java" contentType="text/html; charset=GB2312"%>
    <%@ page import="java.util.*"%>
    <%@ page import="com.gm365.upload.*"%>

    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=GB2312">
    <title>UFOUpload例子1</title>
    </head>
    <body>
    <%
       UFOUpload upload=new UFOUpload();
       ArrayList items=upload.parseRequest(request);     
       
       if (items!=null){
         for (int i=0; i<items.size(); i++){ 
           UFOFile item=(UFOFile)items.get(i);
       
           if (item.isFormField()) {//如果是普通表单项目,显示表单内容。
             String fieldName = item.getFieldName();
             if (fieldName.equals("name")){ //对应demo1.html中type="text" name="name"
               out.print("the field name is: "+item.getString());//显示表单内容。
               out.print("<br>");
             }
           }
           else{//如果是上传文件,显示文件名。
            out.print("the upload file name is: "+item.getPathFileName());
            out.print("<br>");
           }
         }
       }
       upload.close();
    %>
    </body>
    </html>

    运行结果:仅显示表单内容,显示上传文件名,不对上传的文件进行保存。

    示例2
    上传两个文件到指定的目录。

    UFOdemo2.html
    <html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=GB2312">
        <title>File upload</title>
    </head>
    <body>
        <form name="myform" action="UFOdemo2.jsp" method="post"
           enctype="multipart/form-data">
           File1:<br>
           <input type="file" name="myfile1"><br>
           File2:<br>
           <input type="file" name="myfile2"><br>
           <br>
           <input type="submit" name="submit" value="Commit">
        </form>
    </body>
    </html>

    UFOdemo2.jsp
    <%@ page language="java" contentType="text/html; charset=GB2312"%>
    <%@ page import="java.util.*"%>
    <%@ page import="com.gm365.upload.*"%>

    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=GB2312">
    <title>UFOUpload例子1</title>
    </head>
    <body>
    <%
       UFOUpload upload=new UFOUpload();
       ArrayList items=upload.parseRequest(request);     
       String uploadPath="D:\\temp";
       
       if (items!=null){
         File uploadDir=new File(uploadPath);
         if (!uploadDir.exists()){
            uploadDir.mkdirs();
         }    

         for (int i=0; i<items.size(); i++){ 
           UFOFile item=(UFOFile)items.get(i);
           String fileName=item.getFileName();
             if (fileName!=null){ 
         try{
           item.saveAs(uploadPath+"/"+fileName); 
                  out.print("the upload file to: "+uploadPath+"/"+fileName);
                  out.print("<br>");
                }
                catch (Exception e){
                }
             }
         }
       }
       upload.close();
    %>
    </body>
    </html>
    运行结果:显示文件上传保存的路径,并且将文件保存

    示例3
    上传一个文件到指定的目录,并限定文件大小。

    UFOdemo3.html
    <HTML>
    <HEAD>
    <META HTTP-EQUIV="CONTENT-TYPE" CONTENT="text/html; charset=gb2312">
    <TITLE>UFOUpload实现文件上传</TITLE>
    </HEAD>
    <BODY>
    <P>UFOUpload实现文件上传</P>

    <FORM NAME="fileupload" ACTION="UFOdemo3.jsp" method="POST" ENCTYPE="multipart/form-data">
    <!--必须指定表单的加密类型为 multipart/form-data -->
    <P>名称:<INPUT TYPE=TEXT NAME="name" SIZE=12 value="小明"></P>
    <P>性别:<INPUT TYPE=TEXT NAME="sex" SIZE=12 value="男"></P>
    <P>年龄:<INPUT TYPE=TEXT NAME="age" SIZE=12 value="28"></P>
    <P>文件:<INPUT TYPE=FILE NAME="file" SIZE=12></P>
    <P><INPUT TYPE=SUBMIT NAME="submit" VALUE="确定"></P>
    </FORM>
    </BODY>
    </HTML>

    UFOdemo3.jsp
    <%@ page contentType="text/html; charset=gb2312" %>
    <%@ page import="java.io.*" %>
    <%@ page import="java.util.*" %>
    <%@ page import="com.gm365.upload.*" %>

    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=gb2312">
    <title>文件传输例子</title>
    </head>

    <body>
    <%
       boolean isMultipart=UFOUpload.isMultipartContent(request);   //检查表单中是否包含文件
       if (isMultipart){
         UFOUpload upload=new UFOUpload();
         upload.setSizeMax(204800);       //允许的最大文件尺寸
         upload.setAllowedFiles("gif,jpg,jpeg");     

         ArrayList items=upload.parseRequest(request);
         if (items!=null){

           String storeDir=request.getRealPath("/upload_files");
           File storeDirF=new File(storeDir);
           if (!storeDirF.exists()){
              storeDirF.mkdirs();
           }  

           for (int i=0; i<items.size(); i++){
             UFOFile fi=(UFOFile)items.get(i);
             if (fi.isFormField()){    //如果是表单字段
    %>
    <%=fi.getFieldName()%>: <%=fi.getString()%><BR>
    <%
             }
             else{   //如果是文件
               String fileName=fi.getFileName();
               if (fileName!=null && !fileName.equals("")){
                  File dstFile=new File(storeDir, fileName);   

                  System.out.println("fileName="+fileName);
                  System.out.println("storeDir="+storeDir);
                  System.out.println("dstFile="+dstFile.getAbsolutePath());  
    %>
    文件被上传到服务上的实际位置:<%=dstFile.getAbsolutePath()%><br>

    <%
                  fi.saveAs(dstFile);   
                }
            }
         }
       }
       upload.close();
    }
    %>
    </body>
    </html>

    运行结果:显示UFOdemo3.html提交的表单内容,并保存上传文件于E:\UFO\webapps\ROOT\upload_files下(上传文件必须是GIF,JPG,JPEG的图片文件)。

    示例4
    利用Servlet来实现文件上传。

    UFOdemo4.html
    <html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=GB18030">
        <title>UFOUpload servlet Demo</title>
    </head>
    <body>
       <form name="myform" action="/servlet/Upload" method="post"
           enctype="multipart/form-data">
           File:<br>
           <input type="file" name="myfile"><br>
           <br>
           <input type="submit" name="submit" value="Commit">
        </form>
    </body>
    </html>

    Upload.java
    import java.io.File;
    import java.io.IOException;
    import java.util.ArrayList;

    import javax.servlet.ServletException;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;

    import com.gm365.upload.*;

    public class Upload extends HttpServlet{

      private String tempPath="d:\\temp\\buffer\\";  
      
      public void doPost(HttpServletRequest request, HttpServletResponse response)
             throws IOException, ServletException{
        
        UFOUpload upload=null;
        try{
          upload=new UFOUpload();   
          ArrayList items=upload.parseRequest(request);
            
          if (items!=null){  
            for (int i=0; i<items.size(); i++){
              UFOFile fi=(UFOFile)items.get(i);
              if (fi.isFile()){
                String fileName=fi.getFileName();
                if (fileName!=null){
                  System.out.println("fileName="+fileName);
                  File savedFile=new File(tempPath, fileName);
                  fi.saveAs(savedFile);
                  System.out.print("upload succeed");
                }
              }
            }
          }
        }  
        catch (Exception e) {
         //可以跳转出错页面
         e.printStackTrace();
        }
        if (upload!=null){
          upload.close();
        }
      }

      public void init() throws ServletException{
        File tempPathFile=new File(tempPath);
        if (!tempPathFile.exists()){
          tempPathFile.mkdirs();
        }
      }
    }
    运行结果: 将上传文件保存于d:\\temp\\buffer\\下。


       收藏   分享  
    顶(0)
      




    ----------------------------------------------
    风吹鸡蛋壳,财去人安乐

    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2009/8/9 17:25:00
     
     GoogleAdSense狮子座1984-8-7
      
      
      等级:大一新生
      文章:1
      积分:50
      门派:无门无派
      院校:未填写
      注册:2007-01-01
    给Google AdSense发送一个短消息 把Google AdSense加入好友 查看Google AdSense的个人资料 搜索Google AdSense在『 Java/Eclipse 』的所有贴子 访问Google AdSense的主页 引用回复这个贴子 回复这个贴子 查看Google AdSense的博客广告
    2024/5/3 10:18:50

    本主题贴数1,分页: [1]

    管理选项修改tag | 锁定 | 解锁 | 提升 | 删除 | 移动 | 固顶 | 总固顶 | 奖励 | 惩罚 | 发布公告
    W3C Contributing Supporter! W 3 C h i n a ( since 2003 ) 旗 下 站 点
    苏ICP备05006046号《全国人大常委会关于维护互联网安全的决定》《计算机信息网络国际联网安全保护管理办法》
    62.500ms