w3shool html上传文件,文件上传(Upload)

WebMVC模块针对文件的上传处理以及对上传的文件操作都非常的简单,通过注解就轻松搞定:@FileUpload:声明控制器方法需要处理上传的文件流;无参数,需要注意的是文件上传处理的表单enctype属性:

......

IUploadFileWrapper:上传文件包装器接口,提供对已上传文件操作的一系列方法;

示例代码:

@Controller

@RequestMapping("/demo)

public class UploadController {

// 处理单文件上传

@RequestMapping(value = "/upload", method = Type.HttpMethod.POST)

@FileUpload

public IView doUpload(@RequestParam

IUploadFileWrapper file) throws Exception {

// 获取文件名称

file.getName();

// 获取文件大小

file.getSize();

// 获取完整的文件名及路径

file.getPath();

// 获取文件Content-Type

file.getContentType();

// 转移文件

file.transferTo(new File("/temp", file.getName()));

// 保存文件

file.writeTo(new File("/temp", file.getName());

// 删除文件

file.delete();

// 获取文件输入流对象

file.getInputStream();

// 获取文件输出流对象

file.getOutputStream();

return View.nullView();

}

// 处理多文件上传

@RequestMapping(value = "/uploads", method = Type.HttpMethod.POST)

@FileUpload

public IView doUpload(@RequestParam

IUploadFileWrapper[] files) throws Exception {

// ......

return View.nullView();

}

}

文件上传相关配置参数:

#-------------------------------------

# 文件上传配置参数

#-------------------------------------

# 文件上传临时目录,为空则默认使用:System.getProperty("java.io.tmpdir")

ymp.configs.webmvc.upload_temp_dir=

# 上传文件大小最大值(字节),默认值:-1(注:10485760 = 10M)

ymp.configs.webmvc.upload_file_size_max=

# 上传文件总量大小最大值(字节), 默认值:-1(注:10485760 = 10M)

ymp.configs.webmvc.upload_total_size_max=

# 内存缓冲区的大小,默认值: 10240字节(=10K),即如果文件大于10K,将使用临时文件缓存上传文件

ymp.configs.webmvc.upload_size_threshold=

# 文件上传状态监听器,可选参数,默认值为空

ymp.configs.webmvc.upload_file_listener_class=

文件上传状态监听器(upload_file_listener_class)配置:

WebMVC模块的文件上传是基于Apache Commons FileUpload组件实现的,所以通过其自身提供的ProgressListener接口即可实现对文件上传状态的监听;

示例代码:实现上传文件的进度计算;

public class UploadProgressListener implements ProgressListener {

public void update(long pBytesRead, long pContentLength, int pItems) {

if (pContentLength == 0) {

return;

}

// 计算上传进度百分比

double percent = (double) pBytesRead / (double) pContentLength;

// 将百分比存储在用户会话中

WebContext.getContext().getSession().put("upload_progress", percent);

}

}将该接口实现类配置到 ymp.configs.webmvc.upload_file_listener_class 参数中;

通过Ajax定时轮循的方式获取会话中的进度值,并展示在页面中;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值