package app.other.commons.file;

import java.io.UnsupportedEncodingException;

.....

/ ^v^ **  * @version 創建時間:Dec 16, 2008 3:26:41 PM

類說明:多文件上傳

*

*/

public class MutiFileUpload extends HttpServlet {

private static final long serialVersionUID =

670829239023754119L;

private long sizeMax = -1; //

上傳文件大小(單位:字節byte),為-1時,無限制

private String encoding = "utf-8";//

字元編碼,當讀取上傳表單的各部分時會用到該encoding

//緩沖值,

默認是1024*10,即10K

private int sizeThreshold =

DiskFileItemFactory.DEFAULT_SIZE_THRESHOLD;

public Map parameters;// 保存表單參數

public Map files;// 保存上傳的檔

public boolean uploadError = false; //

上傳是否有錯,漠認是沒錯false

/^v^**

* 解析request

*

* @param request

*/

public void parse(HttpServletRequest request)

{

parameters = new

HashMap();

files = new HashMap();

// Create a factory for

disk-based file items

DiskFileItemFactory factory =

new DiskFileItemFactory();

// Set factory

constraints

factory.setSizeThreshold(sizeThreshold);

//

factory.setRepository(repository);

// Create a new file upload

handler

ServletFileUpload upload = new

ServletFileUpload(factory);

// Set overall request size

constraint

upload.setSizeMax(sizeMax);

upload.setHeaderEncoding(encoding);

try {

List items =

upload.parseRequest(request);

Iterator

iterator = items.iterator();

while

(iterator.hasNext()) {

FileItem

item = (FileItem) iterator.next();

if

(item.isFormField()) {

String

fieldName = item.getFieldName();

String

value = item.getString();

parameters.put(fieldName,

value);

}

else {

String

fieldName = item.getFieldName();

files.put(fieldName,

item);

}

}

} catch (FileUploadException e)

{

e.printStackTrace();

this.setUploadError(true);//

設為出錯

}

}

/ ^v^**

* 取得非文件表單的值

* @param key

* @return

*/

public String getParameter(String key) {

return (parameters == null) ?

null : (String) parameters.get(key);

}

public String getParameter(String key, String

encoding) {

if (parameters == null)

return

null;

String value = (String)

parameters.get(key);

try {

if (value !=

null) {

value

= new String(value.getBytes("ISO-8859-1"), encoding);

}

} catch

(UnsupportedEncodingException e) {

e.printStackTrace();

}

return value;

}

/^v^**

* 得到上傳檔的檔案名

*

* @param item

*

* @return

*

*/

public String getFileName(FileItem item) {

String fileName =

item.getName();

fileName =

this.replace(fileName, "\", "/");

fileName =

fileName.substring(fileName.lastIndexOf("/") + 1);

return fileName;

}

/^v^**

* 獲得檔擴展

*

* @param item

* @return

*/

public String getFileExtension(FileItem item)

{

String fileName =

getFileName(item);

fileName =

fileName.substring(fileName.lastIndexOf("."));

return fileName;

}

/^v^**

* 驗證單個的文件是否超過最大值

* @param item

* @param defalutMaxSize

* @return true-正常, false-超過最大值

*/

public boolean checkMaxSize(FileItem item, long

defalutMaxSize){

if(defalutMaxSize == -1){

return

true;

}

return (item.getSize()

<= defalutMaxSize);

}

/^v^**

* 字串替

*

* @param source

*

* @param oldString

*

* @param newString

*

* @return

*

*/

public static String replace(String source,

String oldString, String newString) {

StringBuffer output = new

StringBuffer();

int lengthOfSource =

source.length();

int lengthOfOld =

oldString.length();

int posStart = 0;

int pos;

while ((pos =

source.indexOf(oldString, posStart)) >= 0) {

output.append(source.substring(posStart,

pos));

output.append(newString);

posStart =

pos + lengthOfOld;

}

if (posStart <

lengthOfSource) {

output.append(source.substring(posStart));

}

return output.toString();

}

//getter and setter

}

java muti实现图片上传_MutiFileUpload.java 多文件上传相关推荐

  1. java使用Jsch实现远程操作linux服务器进行文件上传、下载,删除和显示目录信息...

    1.java使用Jsch实现远程操作linux服务器进行文件上传.下载,删除和显示目录信息. 参考链接:https://www.cnblogs.com/longyg/archive/2012/06/2 ...

  2. java 瑞吉外卖day4及补全功能 文件上传下载 菜品分页查询 Dto类 菜品状态修改 菜品停售以及菜品删除

    文件上传下载 文件下载介绍 文件上传代码实现 服务端上传: @RestController @RequestMapping("/common") @Slf4j public cla ...

  3. java怎么把system.out的东西输出到文件上

    java怎么把system.out的东西输出到文件上 浏览(1836)|评论(0)   交流分类:Java|笔记分类: 未分类 RT,我们在程序里system.out的东西都是从控制台刷过. 如果你想 ...

  4. 文件上传linux服务器,Linux 文件上传Linux服务器

    进入命令行 在图形化桌面出现之前,与Unix系统进行交互的唯一方式就是借助由shell所提供的文本命令行界面(command line interface,CLI).CLI只能接受文本输入,也只能显示 ...

  5. SSM框架使用Layui文件上传插件实现多文件上传(多文件列表)

    SSM框架使用Layui文件上传插件实现多文件上传(多文件列表) pom.xml文件的配置 想要实现SSM框架实现多文件上传,必要的jar包必须要在pom.xml文件中引入.如下: <!--co ...

  6. php 文件上传mime 类型,php文件上传类型(MIME)对照表

    网上有很多php文件上传的类,文件上传处理是php的一个特色(至少手册上是将此作为php特点来展示的,个人认为php在数组方面的优异功能更有特色),学php的人都知道文件上传怎么做,但很多人在编程中却 ...

  7. 00截断上传绕过_【文件上传与解析】文件上传与解析漏洞总结v1.0

    点击上方"公众号" 可以订阅哦! Hello,各位小伙伴晚上好~ 这里是依旧勤劳写公众号的小编~ 今天本公众号将推出一个新的模块,那就是漏洞知识点总结模块!!!(此处应有掌声~) ...

  8. php怎么上传函数,PHP单文件上传原理及上传函数的封装操作示例

    搜索热词 @H_404_0@本文实例讲述了PHP单文件上传原理及上传函数的封装操作.分享给大家供大家参考,具体如下: @H_404_0@表单: @H_404_0@0.PHP: 无标题文档 请选择您要上 ...

  9. web文件上传(一)--文件上传与json上传区别及方法

    Web文件上传方法总结大全 上传文件与与上传数据区别 上传数据主要指json等简单字符串,上传文件指的是上传word.excel图片等.在上传数据的时候enctype默认为第一个application ...

  10. 使用Apache文件上传控件实现文件上传

    本文使用Apache提供的第三方文件上传控件进行文件上传 1.导入第三方commons-fileupload-1.3.2.jar和commons-io-2.5.jar包 2.页面form标签需添加en ...

最新文章

  1. 从RNN一步步通俗易懂T理解LSTM
  2. py文件打包或apk_Python文件打包成exe很简单,如果安卓手机也能运行的软件你会吗...
  3. Core Data 迁移与版本管理
  4. 【译】使用这些 CSS 属性选择器来提高前端开发效率!
  5. BNU OJ 第26303 题 Touchscreen Keyboard
  6. 调python返回图片_三个好习惯,帮你写好Python里的异常处理
  7. Origin绘制散点图个性化设置散点颜色
  8. 多核对mysql好处_多核和MySQL性能
  9. 李清照 —— 别是一家
  10. 16 数值的整数次方 (第3章 高质量的代码-代码的完整性)
  11. 追溯计算机的本源,读电路与系统简史
  12. 李开复:未曾公布的乔布斯故事
  13. BZOJ2794 [Poi2012]Cloakroom [离线][DP]
  14. 在服务器上安装tensorflow-gpu版本及其使用
  15. 6、Hello World官网教程(TX2)第一部分
  16. Matplotlib——饼图pie()函数
  17. 阿尔伯塔大学计算机科学专业课程,[阿尔伯塔大学]计算机/计算机工程专业
  18. 四步完成离线部署wvs
  19. 报错 - 使用marked报错 marked__WEBPACK_IMPORTED_MODULE_4___default(...) is not a function
  20. mysql的存储模型_一种BIM模型数据的数据库存储格式的制作方法

热门文章

  1. MySQL复制 slave_exec_mode 参数IDEMPOTENT 说明
  2. 计算机组装实训写总结,计算机组装维护实训总结.doc
  3. [c语言]malloc动态开辟内存空间
  4. PS 羽化工具使用
  5. UESTC 1607 大学生足球联赛 构造、蛇形安排赛程表
  6. WinForm实现倒计时锁定程序完整源码附注释
  7. Java实现简单日期计算功能
  8. 塞规公差带图_塞规和卡规公差表
  9. Win10 使用双宽带和双网卡进行网络叠加、提高网速的设置
  10. skewx 字体模糊_Pixelmator:从此修图不再叫做 “PS”