cos-26上传

在开发中常常需要上传文件,上传文件的方式有很多种,这里有一个cos实现的例子。

首先是要拷贝cos.jar包拷贝到WEB-INF/lib目录下,然后才进行编码。

创建一个可以进行自动重命名的Java文件FileRenameUtil.java:

  1. package org.ml.drp.util;
  2. import java.io.File;
  3. import java.util.Date;
  4. import com.oreilly.servlet.multipart.FileRenamePolicy;
  5. /**
  6. * 文件重命名
  7. * @author MuLing
  8. *
  9. */
  10. public class FileRenameUtil implements FileRenamePolicy {
  11. public File rename(File file) {
  12. String body = "";
  13. String ext = "";
  14. Date date = new Date();
  15. int pot = file.getName().lastIndexOf(".");//取得文件名和后缀分割点
  16. if (pot != -1) {//说明后缀存在
  17. body = date.getTime() + "";//采用时间的形式命名
  18. ext = file.getName().substring(pot);//截取后缀名
  19. } else {
  20. body = (new Date()).getTime() + "";
  21. ext = "";
  22. }
  23. String newName = body + ext;
  24. file = new File(file.getParent(), newName);//对文件进行重命名
  25. return file;
  26. }
  27. }

然后创建一个实现上传功能的servlet,为了方便查看上传情况,所以加入了一些输出语句。

FileUploadServlet.java

  1. package org.ml.servlet;
  2. import java.io.File;
  3. import java.io.IOException;
  4. import java.util.Enumeration;
  5. import javax.servlet.ServletException;
  6. import javax.servlet.http.HttpServlet;
  7. import javax.servlet.http.HttpServletRequest;
  8. import javax.servlet.http.HttpServletResponse;
  9. import com.oreilly.servlet.MultipartRequest;
  10. /**
  11. * 能够进行文件上传的servlet类
  12. * @author MuLing
  13. *
  14. */
  15. public class UploadServlet extends HttpServlet {
  16. private static final long serialVersionUID = 1L;
  17. public UploadServlet() {
  18. super();
  19. }
  20. public void destroy() {
  21. super.destroy();
  22. }
  23. @SuppressWarnings("unchecked")
  24. public void doGet(HttpServletRequest request, HttpServletResponse response)
  25. throws ServletException, IOException {
  26. // 存绝对路径
  27. // String filePath = "C://upload";
  28. // 存相对路径
  29. String filePath = getServletContext().getRealPath("/") + "upload";
  30. System.out.println(filePath);//输出存放上传文件所到的路径
  31. File uploadPath = new File(filePath);
  32. // 检查文件夹是否存在 不存在 创建一个
  33. if (!uploadPath.exists()) {
  34. uploadPath.mkdir();
  35. }
  36. // 文件最大容量 3M
  37. int fileMaxSize = 3 * 1024 * 1024;
  38. // 存放文件描述
  39. @SuppressWarnings("unused")
  40. String[] fileDiscription = { null, null };
  41. // 文件名
  42. String fileName = null;
  43. // 上传文件数
  44. int fileCount = 0;
  45. // 重命名策略
  46. RandomFileRenamePolicy rfrp = new RandomFileRenamePolicy();
  47. // 上传文件
  48. MultipartRequest mulit = new MultipartRequest(request, filePath,
  49. fileMaxSize, "UTF-8", rfrp);//取得上传文件
  50. String userName = mulit.getParameter("userName");
  51. System.out.println(userName);
  52. Enumeration filesname = mulit.getFileNames();//取得上传的所有文件(相当于标识)
  53. while (filesname.hasMoreElements()) {
  54. String name = (String) filesname.nextElement();//标识
  55. System.out.println(name);
  56. fileName = mulit.getFilesystemName(name); //取得文件名
  57. String contentType = mulit.getContentType(name);//工具标识取得的文件类型
  58. if (fileName != null) {
  59. fileCount++;
  60. }
  61. System.out.println("文件名:" + fileName);
  62. System.out.println("文件类型: " + contentType);
  63. }
  64. System.out.println("共上传" + fileCount + "个文件!");
  65. }
  66. public void doPost(HttpServletRequest request, HttpServletResponse response)
  67. throws ServletException, IOException {
  68. this.doGet(request, response);
  69. }
  70. public void init() throws ServletException {
  71. }
  72. }

在web.xml文件中的配置servlet如下:

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <web-app version="2.5"
  3. xmlns="http://java.sun.com/xml/ns/javaee"
  4. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  5. xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
  6. http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
  7. <servlet>
  8. <servlet-name>UploadServlet</servlet-name>
  9. <servlet-class>org.ml.servlet.UploadServlet</servlet-class>
  10. </servlet>
  11. <servlet-mapping>
  12. <servlet-name>UploadServlet</servlet-name>
  13. <url-pattern>/UploadServlet</url-pattern>
  14. </servlet-mapping>
  15. <welcome-file-list>
  16. <welcome-file>index.jsp</welcome-file>
  17. </welcome-file-list>
  18. </web-app>

上传页面代码如下:

  1. <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
  2. <%
  3. String path = request.getContextPath();
  4. String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
  5. %>
  6. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
  7. <html>
  8. <head>
  9. </head>
  10. <body>
  11. <form enctype="multipart/form-data" method = "post" action = "UploadServlet">
  12. <input type="text" name="userName" />
  13. <p>上传文件1:<input type = "file" name = "File1" size = "20" maxlength = "20"><br></p>
  14. <p>上传文件2:<input type = "file" name = "File2" size = "20" maxlength = "20"><br></p>
  15. <p>上传文件3:<input type = "file" name = "File3" size = "20" maxlength = "20"><br></p>
  16. <p>上传文件4:<input type = "file" name = "File4" size = "20" maxlength = "20"><br></p>
  17. <input type = "submit" value = "上传">
  18. </form>
  19. </body>
  20. </html>

上面完成同时上传一个或者多个文件的操作,使用起来很方便。

时间: 2024-11-06 03:47:09

cos-26上传的相关文章

腾讯云COS,上传,下载,删除,在线查看等操作

研究了下文档,学会的先记录下. 首先新建工具类COSUtil. 配置账号密码.存储桶以生成客户端(每个方法下都需要配置,为了代码简洁后面的方法会省略): 1 String secretId = "root"; //初始化用户身份信息(secretId, secretKey). 2 String secretKey = "123456; 3 String bucketName = "test-1250000000"; //初始化存储桶 4 5 COSCred

腾讯云cos对象存储服务文件上传api就是一个大坑

一.介绍 对象存储服务(Cloud Object Service)是基于腾讯多年海量服务经验,对外提供的可靠.安全.易用的海量存储服务.提供多样化接入方式,以及全国部署的上传加速集群,可以无缝衔接CDN进行加速下载. 二.cos 文件上传api源码 /** * 单个文件上传,适用于小文件 * * @param bucketName * bucket名称 * @param remotePath * 远程文件路径 * @param localPath * 本地文件路径 * @return 服务器端返

struts 多文件上传 xml 版本

[本文简介] 本文将介绍 以配置 struts.xml  的方式 实现 多文件上传的功能. [文件夹结构] [struts.xml] 1 <?xml version="1.0" encoding="UTF-8" ?> 2 <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.1//EN" "http://st

文件上传的几个 - 示例

本篇将要和朋友们分享的是几个上传文件的例子和逻辑步奏及自定义个简单的js上传插件我取名为shenniu.upfile-0.0.1.js:近来在讨论组中很有几个朋友咨询上传文件的代码和怎么下载上传的文件,所以写了此篇文章,希望能为朋友们解答一些疑惑或能带来帮助,也谢谢各位多多支持点赞. 以上是个人的看法,下面来正式分享今天的文章吧: . 使用iis发布保存上传文件的文件夹 . 示例A - 普通表单上传文件,Request.Files获取上传文件 . 示例B - 普通表单上传文件,HttpPoste

java微信接口之三—上传多媒体文件

一.微信上传多媒体接口简介 1.请求:该请求是使用post提交from来实现的,我们可以在网页上进行表单提交来实现.地址为: http://file.api.weixin.qq.com/cgi-bin/media/upload?access_token=ACCESS_TOKEN&type=TYPE 其中ACCESS_TOKEN是我们动态获取的,TYPE是 媒体文件类型.有以下几种类型:,分别有图片(image).语音(voice).视频(video)和缩略图(thumb). post提交的数据就

php实现头像预览上传功能

最近在做php第二阶段的项目,需要用到头像上传的功能 我们要完成头像上传功能,一共要写两个php页面,第一个页面我们叫做touxiang.php,第二个页面我们叫做upload.php 1.touxiang.php 1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"&g

struts2学习笔记之十七(上传文件)

文件上传 传统的文件上传 (1)需要将form设置为multipart/form-data:此时会将整个表单以二进制流的方式提交:接下来就无法将通过request.getParameter()来获取请求参数. (2)需要启用一个文件上传组件(SmartUpload,Common-FileUpload等) (3)Servlet通过文件上传组件来获取请求参数,获取上传文件. 得到上传文件之后,以IO流的方式把文件写入磁盘 Servlet3.0之后的文件上传 只需要增加一个@MultipartConf

AngularJs附件上传下载

首先:angular-file-upload 是一款轻量级的 AngularJS 文件上传工具,为不支持浏览器的 FileAPI polyfill 设计,使用 HTML5 直接进行文件上传. 第一步:引用angularjs的脚本:ng-file-upload-shim.min.js 和 ng-file-upload.min.js 第二步:在angularjs的controller中注入:ngFileUpload 例如:angular.module('liaoyuan.controllers',

sftp文件上传和下载

sftp是Secure File Transfer Protocol的缩写,安全文件传送协议.可以为传输文件提供一种安全的加密方法.sftp 与 ftp 有着几乎一样的语法和功能.SFTP 为 SSH的一部份,是一种传输档案至 Blogger 伺服器的安全方式.其实在SSH软件包中,已经包含了一个叫作SFTP(Secure File Transfer Protocol)的安全文件传输子系统,SFTP本身没有单独的守护进程,它必须使用sshd守护进程(端口号默认是22)来完成相应的连接操作,所以从

Struts2中实现文件上传的功能

1.首先得配置一下Struts得配置文件struts-xml: 1 <?xml version="1.0" encoding="UTF-8" ?> 2 <!DOCTYPE struts PUBLIC 3 "-//Apache Software Foundation//DTD Struts Configuration 2.1.7//EN" 4 "http://struts.apache.org/dtds/struts-2