限制上传大小、用COS实现文件上传与下载 五(63)

一 限制上传大小

1:限制总文件的大小 。    如 上传10文件,设置最多总上传大小为100M。


void


setSizeMax(long sizeMax)
          Sets the maximum
allowed size of a complete request, as opposed to setFileSizeMax(long).

2:设置第每一个文件的大小 ,如果设置每 一个文件大小10M。


 void


setFileSizeMax(long fileSizeMax)
          Sets the maximum
allowed size of a single uploaded file, as opposed to getSizeMax().

 二 用COS实现文件上传

package cn.hx;
import java.io.File;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.UUID;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.oreilly.servlet.MultipartRequest;
import com.oreilly.servlet.multipart.DefaultFileRenamePolicy;
import com.oreilly.servlet.multipart.FileRenamePolicy;
/**
 * 在Cos中就一个类,
 * MultipartRequest它是request的包装类。
 */
public class CosServlet extends HttpServlet {
 public void doPost(HttpServletRequest request, HttpServletResponse resp)
throws ServletException, IOException {

       //第一步:声明文件的保存目录

       String path = getServletContext().getRealPath("/up");

       //第二步:文件传

       //声明文件重新取名的策略

       FileRenamePolicy rename = new DefaultFileRenamePolicy();

       MultipartRequest req =

              new MultipartRequest(request,path,1024*1024*100,"UTF-8",new MyRename());

//     //第三步:显示信息,

       resp.setContentType("text/html;charset=UTf-8");

       PrintWriter out = resp.getWriter();

       out.print("文件名称1:"+req.getOriginalFileName("img1"));

       out.print("<br/>新名称:"+req.getFilesystemName("img1"));

       out.print("<br/>类型1:"+req.getContentType("img1"));

       out.print("<br/>大小1:"+req.getFile("img1").length());

       out.print("<br/>说明:"+req.getParameter("desc1"));

       if(req.getContentType("img1").contains("image/")){

           out.print("<img src=‘"+request.getContextPath()+"/up/"+req.getFilesystemName("img1")+"‘></img>");

       }

    }

}

class MyRename implements FileRenamePolicy{

    public File rename(File file) {

       String fileName = file.getName();

       String extName = fileName.substring(fileName.lastIndexOf("."));

       String uuid = UUID.randomUUID().toString().replace("-","");

       String newName = uuid+extName;//abc.jpg

       file = new File(file.getParent(),newName);

       return file;

    }

}

三 下载

即可是get也可以是post。

public void doPost(HttpServletRequest req, HttpServletResponse resp)

throws ServletException, IOException {

req.setCharacterEncoding("UTF-8");

String name = req.getParameter("name");

//第一步:设置响应的类型

resp.setContentType("application/force-download");

//第二读取文件

String path = getServletContext().getRealPath("/up/"+name);

InputStream in = new FileInputStream(path);

//设置响应头

//对文件名进行url编码

name = URLEncoder.encode(name, "UTF-8");

resp.setHeader("Content-Disposition","attachment;filename="+name);

resp.setContentLength(in.available());

//第三步:开始文件copy

OutputStream out = resp.getOutputStream();

byte[] b = new byte[1024];

int len = 0;

while((len=in.read(b))!=-1){

out.write(b,0,len);

}

out.close();

in.close();

}

时间: 2024-08-24 23:17:43

限制上传大小、用COS实现文件上传与下载 五(63)的相关文章

文件上传~Uploadify上传控件~续(多文件上传)

对于Uploadify文件上传之前已经讲过一次(文件上传~Uploadify上传控件),只不过没有涉及到多文件的上传,这回主要说一下多个文件的上传,首先,我们要清楚一个概念,多文件上传前端Uploadify是通过轮训的方式去调用我们的后台upload程序的,所以,对于多文件上传来说,也没什么稀奇的. 下面是文件上传后的缩略图如下 列表的组装使用JS模板,这样对于复杂的HTML结构来说,可以减少拼写错误的出现,关闭是将LI元素从UI元素移除,最后提交时,从UI里检查LI元素,然后对它进行组装,并进

JQuery获取图片大小并控制图片文件上传大小以及上图片文件时如何预览图片

首先我们来看效果图: 点击上传之后如下: 在这里我获取到文件的大小,并且如果超出我设定的大小,则禁止上传! 不多说,上代码:先看div布局: <div class="imageContainer"> <input id="thumbnail" name="thumbnail" required="" type="file" size="100"> <div

php文件上传参考配置与大文件上传

PHP用超级全局变量数组$_FILES来记录文件上传相关信息的,在php文件上传之前,可通过调节php.ini中相关配置指令,来控制上传相关细节. 1.file_uploads=on/off   是否允许通过http方式上传文件 2.max_execution_time=30   允许脚本最大执行时间,超过这个时间就会报错 3.memory_limit=50M   设置脚本可以分配的最大内存量,防止失控脚本占用过多内存,此指令只有在编译时设置了    --enable-memory-limit标

如何使用PHP上传文件,上传图片,php上传教程,php表单文件上传教程

使用PHP进行文件上传,主要使用到表单功能和PHP内置的$_FILES函数功能.接下来我们看如何实现PHP上传功能.例子效果图,此例子是在Mac下进行调试成功的. PHP上传图片文件的功能代码如下: <html> <head> <meta charset="utf-8"> <title>Upload File Example</title> <style> body{ width:500px; margin:20p

十九、多文件上传(ajaxFileupload实现多文件上传功能)

来源于https://www.jb51.net/article/128647.htm 打开google 搜索"ajaxFileupload' '多文件上传"可以搜到许许多多类似的,那我为什么还要写一下呢?一个是对之前大神的贡献表示感谢:二个是自己知识的总结:三个是自己在原有的基础上改动了下,在此记录,可能帮助其他朋友. 用过这个插件的都知道这个插件的基本用法,我就不废话,直接上代码. 我需要实现多个文件上传,之前的做法是定义多个不同id的input,然后把ajaxfileuplod方法

导入项目到myeclipse中,项目上打了叉,jsp文件上都是叉

首先你要明白,你导入的项目很可能环境跟你当前的eclipse环境是不一样的,jdk版本,与jre版本是否一致,比如项目中使用的tomcat的名字是777,你的eclipse当中不能有777的tomcat,首先把环境需要更改的地方进行更改! 然后解决jsp文件都是叉的问题,对于jsp文件当中说servlet,jsp等等不认识,那么基本上就缺少两个jar包,而这两个jar包在tomcat的安装目录里有 jsp-api.jar servlet-api.jar 导入这两个jar包里有 此时所有jsp文件

cos实现文件上传--推荐

1.导包 2.核心类:MultipartRequest MultipartRequest是request的包装类 参数1:request 参数2:保存路径 参数3:上传文件大小,默认为1M 参数4:编码 参数5:重命名FileRenamePolicy,默认重命名格式是在名字后面加数字 参数可以根据需要进行 3.与Apache-upload相比 1.可以直接上传多文件,不用遍历 2.获取text等简单文本不用判断 3.可默认命名 4.Demo 1 String path=getServletCon

resumable.js —— 基于 HTML 5 File API 的文件上传组件 支持续传后台c#实现

在git上提供了java.nodejs.c#后台服务方式:在这里我要用c#作为后台服务:地址请见:https://github.com/23/resumable.js 我现在visual studio的环境是2013,mvc4,framwork4.0:我们来看git上给出的c#示例: samples/DotNET/ 在文件中包含两个文件Controllers Models,在两个文件里各有一个文件: 我把他部署到自己项目里边,却没有达到自己预定的效果,我是这样更改的: 一.我先把我的类库项目调成

使用cos.jar包实现文件上传功能

我们经常做项目时要用到文件上传功能,同时还要控制文件大小与文件类型,文件的重命名等功能:今天跟大家讲解一下使用cos.jar包来实现文件上传与控制的功能吧. 第一步:要把cos.jar文件拷贝到WEB-INF/lib文件夹 第二步:创建上传的jsp文件,upload.jsp,页面的表单必须有如下2个属性,并且值是固定的 1.enctype="multipart/form-data"2.method = "post" 页面完整代码如下: <%@ page lan