jsp实现文件上传(二)用cos组件实现文件上传

jsp表单

<%@ page language="java" pageEncoding="utf-8"%>

<html>
<head>
<title>My JSP ‘index.jsp‘ starting page</title>
</head>

<body>
    <form action="cos.jsp" method="post" enctype="multipart/form-data">
        <input type="text" name="info1"><br> 
        <input type="text" name="info2"><br> 
        <input type="file" name="userface1"><br> 
        <input type="file" name="userface2"><br> 
        <input type="file" name="userface3"><br> 
        <input type="submit" name="mysub" value="upfile">
    </form>
</body>
</html>

cos组件实现文件上传 jsp代码

<%@ page language="java" pageEncoding="utf-8"%>
<%@ page import="java.io.File"%>
<%@ page import="com.oreilly.servlet.multipart.FilePart"%>
<%@ page import="com.oreilly.servlet.multipart.ParamPart"%>
<%@ page import="com.oreilly.servlet.multipart.Part"%>
<%@ page import="com.oreilly.servlet.multipart.MultipartParser"%>
<%
    //使用cos组件实现文件上传
    MultipartParser mp = new MultipartParser(request, 10 * 1024 * 1024);
    Part part;
    mp.setEncoding("utf-8");//取决于来源页面的编码,如果是表态的应为gbk,如果是jsp应为utf-8
    int ii = 0;
    while ((part = mp.readNextPart()) != null) {
        String name = part.getName();
        if (part.isParam()) {
            ParamPart paramPart = (ParamPart) part;
            String value = paramPart.getStringValue();
            out.println("param: name=" + name + "; value=" + value);
            System.out.println(value);
        } else if (part.isFile()) {
            FilePart filePart = (FilePart) part;
            String fileName = filePart.getFileName();
            if (fileName != null) {
                long size = filePart.writeTo(new File(this.getServletContext().getRealPath("/upload")));
                out.println("file: name=" + name + "; fileName=" + fileName +
                  ", filePath=" + filePart.getFilePath() + 
                  ", contentType=" + filePart.getContentType() + 
                  ", size=" + size);
              }else { 
                out.println("file: name=" + name + "; EMPTY");
              }
            out.print(fileName);
        }
    }
%>

文件命名机制 

1.根据uuid

import java.io.File;
import java.util.UUID;

import com.oreilly.servlet.multipart.FileRenamePolicy;

public class MyUuid implements FileRenamePolicy {

    @Override
    public File rename(File f) {
        String body = UUID.randomUUID().toString();
        String ext = "";
        int pot = f.getName().lastIndexOf(".");
        if (pot != -1) {
            ext = f.getName().substring(pot);
        }
        String newName = body + ext;
        f = new File(f.getParent(), newName);
        return f;
    }

}

2.根据时间随机数

import java.io.File;
import java.util.UUID;

import com.oreilly.servlet.multipart.FileRenamePolicy;

public class MyRandom implements FileRenamePolicy {

    @Override
    public File rename(File f) {
        String body = String.valueOf(System.currentTimeMillis());
        String ext = "";
        int pot = f.getName().lastIndexOf(".");
        if (pot != -1) {
            ext = f.getName().substring(pot);
        }
        String newName = body + ext;
        f = new File(f.getParent(), newName);
        return f;
    }

}

上传文件并改名字

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <title>cc.html</title>
  </head>
  
  <body>
  <form action="cc.jsp" method="post" enctype="multipart/form-data">
  姓名:<input type="text" name="uname"><br>
 文件1:<input type="file" name="ufile1"><br>
 文件2:<input type="file" name="ufile2"><br>
 <input type="submit" value="提交">
  </form>
  
  </body>
</html>

 

<%@page import="com.MyRandom"%>
<%@ page language="java" pageEncoding="utf-8"%>
<%@ page import="com.oreilly.servlet.MultipartRequest"%>
<%@ page import="com.oreilly.servlet.multipart.DefaultFileRenamePolicy"%>
<%@ page import="com.MyUuid"%>
<%@ page import="java.io.File"%>
<%
    //使用cos组件实现文件上传
    String path = this.getServletContext().getRealPath("/upload");
    //MultipartRequest req = new MultipartRequest(request, path, "utf-8");
    //out.print(req.getParameter("uname"));
    //out.print("<hr>");
    //out.print(req.getFile("ufile1").getName());
    //out.print(req.getFile("ufile2").getName());
    
    //MultipartRequest req = new MultipartRequest(request,path,10*1024*1024,"utf-8",new MyUuid());
    MultipartRequest req = new MultipartRequest(request,path,10*1024*1024,"utf-8",new MyRandom());
    out.print(req.getFile("ufile1").getName());
    
%>

 

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。