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;
} }

3.上传文件并改名字

<!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()); %>

-------------------------------------------------------------------------------------------------------

用servlet技术用cos组建实现上传下载

一、JSP页面如下:

jsp实现文件上传(二)用cos组件实现文件上传的更多相关文章

  1. python 文件操作(二) 替换性修改文件内容

    正常情况我们想要仅对文件某一行的内容进行修改,而不改变其他内容,在原文件的基础上不能修改,因为当我们对原文件进行写操作时,如果原文件里面有内容,就会清空,在这种情况下,只能对文件进行替换性修改:即重新 ...

  2. 【java】[文件上传jar包]commons-fileUpload组件解决文件上传(文件名)乱码问题

    response.setContentType("text/html; charset=UTF-8");  Boolean isMultipart = ServletFileUpl ...

  3. 关于GC(上):Apache的POI组件导致线上频繁FullGC问题排查及处理全过程

    某线上应用在进行查询结果导出Excel时,大概率出现持续的FullGC.解决这个问题时,记录了一下整个的流程,也可以作为一般性的FullGC问题排查指导. 1. 生成dump文件 为了定位FullGC ...

  4. vue 父组件给子组件传值 Vue父组件给子组件传方法 Vue父组件把整个实例传给子组件

    Home.vue <template> <!-- 所有的内容要被根节点包含起来 --> <div id="home"> <v-header ...

  5. 利用 cos 组件实现jsp中上传附件

    需求:在web功能中附件上传功能为最基本的功能之一,所以用cos组件做了一个附件上传的demo.附件上传功能的实现可以利用其它的java组件实现,相关资料网上比较多. 说明步骤:下载组件并安装 --& ...

  6. JSP+Servlet中使用cos.jar进行图片上传(文件上传亦然)

    链接:JSP+Servlet中使用jspsmartupload.jar进行图片上传下载 关于cos.jar,百度百科只有这么几句话(http://baike.baidu.com/subview/406 ...

  7. 模拟文件上传(二):使用apache fileupload组件进行文件上传

    其中涉及到的jar包: jsp显示层: <%@ page language="java" import="java.util.*" pageEncodin ...

  8. iOS开发AFN使用二:AFN文件下载与文件上传

    #import "ViewController.h" #import "AFNetworking.h" @interface ViewController () ...

  9. 上传大文件到腾讯云cos遇到的一些问题

    讲一个开发遇到的问题. 开发中遇到一个需求,需要在后台表单页面支持上传视频.因为项目中一直用的是腾讯云的COS做第三方存储平台,所以视频也要上传到cos中保存.首先想到的是使用腾讯提供的php的SDK ...

随机推荐

  1. TFS2018 获取所有Build变量及变量值

    添加一个Command Line 步骤,Tool设置为 cmd ,并设置参数为 /k set 注意:若在执行时出现如下报错信息,Tool的值改成 cmd.exe --20T02::.0416435Z ...

  2. 【IntelliJ IDEA】2017.3.4版本永久破解

    [本版本软件包和破解jar在网盘上有    我的网盘--技术--idea破解所需要的] 1.idea官网下载 历史版本 选择2017.3.4版本下载 https://www.jetbrains.com ...

  3. [转]JVM堆和栈的区别

    物理地址 堆的物理地址分配对对象是不连续的.因此性能慢些.在GC的时候也要考虑到不连续的分配,所以有各种算法.比如,标记-消除,复制,标记-压缩,分代(即新生代使用复制算法,老年代使用标记——压缩) ...

  4. XStream 数组(List)输出结构

    <!-- 期望的DOM树 --> <Articles> <item> <Title>微信SDK初步结构</Title> <Descri ...

  5. 在线API

    JExcelApi http://jexcelapi.sourceforge.net/resources/javadocs/index.html Poi http://poi.apache.org/a ...

  6. Android应用程序窗体View的创建过程

    View类是android中非常重要的一个类.view是应用程序界面的直观体现,我们看到的应用程序界面就能够看作是View(视图)组成的. 那么我们应用程序的界面是怎么创建的呢,也就是应用程序的Vie ...

  7. (转)C系程序员面试必知必会之大端小端

      C程序员经常被问及的一道面试题是:什么是大端/小端,怎么样判断是大端/小端?大端小端问题对于嵌入式程序员绝对不会陌生(否则,别告诉我你是搞嵌入式的),它与CPU体系结构有关.比如常见的X86处理器 ...

  8. C++结构体中使用函数与类中使用函数小结

    #include <iostream>#include <string.h>using namespace std;struct stud//学生信息结构体{    char ...

  9. mysql 环境变量之 group_concat_max_len

    今天使用mysql group_concat()函数,对查询的数据进行字符串连接操作. 不过由于查询的结果较多,连接后的结果很长导致不能完全显示. 查询手册发现如下说明: (先说说group_conc ...

  10. (转载)display:inline、block、inline-block的区别

    display:block就是将元素显示为块级元素. block元素的特点是: 总是在新行上开始: 高度,行高以及顶和底边距都可控制: 宽度缺省是它的容器的100%,除非设定一个宽度 <div& ...