src/org/bs/servlet/backend/MultipartRequestWrapper.java
(开头部分) 2KB这里只显示每个文件的开头 60 行。登录后可以解锁完整代码。
package org.bs.servlet.backend;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.util.HashMap;
import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletRequestWrapper;
import org.apache.commons.fileupload.FileItemIterator;
import org.apache.commons.fileupload.FileItemStream;
import org.apache.commons.fileupload.servlet.ServletFileUpload;
import org.apache.commons.fileupload.util.Streams;
import org.apache.commons.io.FilenameUtils;
public class MultipartRequestWrapper extends HttpServletRequestWrapper {
private Map allParams;
public MultipartRequestWrapper(HttpServletRequest request) {
super(request);
//首先判断是否multipart编码类型
//如果是multipart编码类型,就逐个从request中取出各个表单域
//如果表单域是普通的表单域,则将它的值取出,放到allParams中
//如果表单域是文件,则
//1、把文件先存储到磁盘的某个目录中!
//2、把文件的有关信息(名称,类型,上传时间)包装成Attachment[]类型
//3、把包装好的Attachment[]类型,放到allParams中
try {
//首先,判断是否multipart编码类型
boolean isMultipart = ServletFileUpload.isMultipartContent(request);
if(!isMultipart){
allParams = request.getParameterMap();
}else{
allParams = new HashMap();
ServletFileUpload upload = new ServletFileUpload();
FileItemIterator iter = upload.getItemIterator(request);
while(iter.hasNext()){
FileItemStream item = iter.next();
//得到表单域的名称
String name = item.getFieldName();
//得到表单域的值(这是一个输入流)
InputStream stream = item.openStream();
//如果是普通表单域
if(item.isFormField()){
String value = Streams.asString(stream,request.getCharacterEncoding());
}else{ //如果是文件
if(stream.available() != 0){//如果文件域没有选择文件,则忽略处理
String filename = item.getName(); //得到上传的文件名称
if(filename != null){
//因为在IE下面,上传的文件还包含有此文件在客户端机器的路径
//所以,要把这个路径去掉,只取文件名
filename = FilenameUtils.getName(filename);
}
//将上传文件的输入流输出到磁盘的文件上
// Streams.copy(stream, new FileOutputStream(Attachment.ATTACHMENT_DIR+filename), true);
后面还有 12 行代码,购买后查看完整代码
24 小时内免费解锁 3 个项目,之后 1 算力/个。 规则说明
AI 解读 AI
登录后可用,每次 10 算力,解读结果公开显示在下面。
还没有人解读过这个文件。