web 中常用的上传文件的方法总结

这里我们来总结整理一下常用的文件上传方式以及要注意的东西:

1org.apache.commons.fileupload 使用apachefileuoload 来实现

无论使用框架还是单独的jsp页面,最终都还是要解析HTTP请求数据

我们需要的是简单的,容易配置的项目。模块划分清晰的。最好代码编写比较优雅。

在这里为了简单的演示接收上传数据,我们使用简单的jsp页面来演示,这样便于理解

代码如下:

文字版

String uid = request.getHeader("uid");//

String id = request.getHeader("id");

String md5 = request.getHeader("md5");

String lenSvr = request.getHeader("lenSvr");

String lenLoc = request.getHeader("lenLoc");

String blockOffset = request.getHeader("blockOffset");

String blockSize = request.getHeader("blockSize");

String blockIndex = request.getHeader("blockIndex");

String complete = request.getHeader("complete");

String pathSvr = request.getHeader("pathSvr");

pathSvr = PathTool.url_decode(pathSvr);

//参数为空

if( StringUtils.isBlank( uid )

|| StringUtils.isBlank( id )

|| StringUtils.isBlank( blockOffset )

|| StringUtils.isBlank(pathSvr))

{

XDebug.Output("param is null");

return;

}

// Check that we have a file upload request

boolean isMultipart = ServletFileUpload.isMultipartContent(request);

FileItemFactory factory = new DiskFileItemFactory();

ServletFileUpload upload = new ServletFileUpload(factory);

List files = null;

try

{

files = upload.parseRequest(request);

}

catch (FileUploadException e)

{// 解析文件数据错误

out.println("read file data error:" + e.toString());

return;

}

FileItem rangeFile = null;

// 得到所有上传的文件

Iterator fileItr = files.iterator();

// 循环处理所有文件

while (fileItr.hasNext())

{

// 得到当前文件

rangeFile = (FileItem) fileItr.next();

}

//文件块验证

if(Integer.parseInt(blockSize) == rangeFile.getSize())

{

//保存文件块数据

FileBlockWriter res = new FileBlockWriter();

res.write( Long.parseLong(blockOffset),pathSvr,rangeFile);

rangeFile.delete();

out.write("ok");

}

else

{

rangeFile.delete();

out.write("block size error");

}%>

当选择文件完毕后控件将开始自动上传。数据将会发送到指定的位置,在这里是f_post.jsp页面

配置截图

注意地址要配置完整,端口号要配置正确。因为实际应用中我们发现很多开发人员的本地环境端口并不是8080,由于端口不正确导致发送数据错误或者无法上传。

到这里基本上就结束了。

猜你喜欢

转载自blog.csdn.net/activexme/article/details/79129460
今日推荐