社区
Web 开发
帖子详情
文件上传功能的实现
树成
2008-10-19 12:44:37
我在实现文件上传功能的时候,总是不能够获得完整的上传数据,在网络中流的available()方法是无效的,所以我从http头的content-length属性中获得上传长度,但是当上传长度超过1M的时候获得的上传数据又不全了,请问有没有好的办法获得完整的上传数据?
...全文
431
5
打赏
收藏
文件上传功能的实现
我在实现文件上传功能的时候,总是不能够获得完整的上传数据,在网络中流的available()方法是无效的,所以我从http头的content-length属性中获得上传长度,但是当上传长度超过1M的时候获得的上传数据又不全了,请问有没有好的办法获得完整的上传数据?
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
5 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
树成
2008-10-19
打赏
举报
回复
感谢楼上几位的帮助,那些框架我知道用一些,但也不是很熟悉,我现在需求的是手工分析上传流来对上传数据进行处理,因为业务需要,我需要对流进行一些特殊处理,也许框架能够实现,但是毕竟要看许多文档,自己实现一些可能更直接一些。
我的上传要求是不使用jdk与j2ee以外的第三方包,而是自己分析上传流。
现在是要准确的获得上传流的数据长度
,虽然现在有一个蠢办法,但是我觉得应该还有更好的其它办法实现的,因为我觉得我现在使用的办法在性能上存在很大问题,也可能会造成较大漏洞。
「已注销」
2008-10-19
打赏
举报
回复
楼主是用组件上传 还是 手工分析流内容上传
这篇文章详细地分析了上传组件COS及与其他上传组件smartUpload、FileUpload的性能对比 希望对你有帮助
http://blog.csdn.net/hingwu/archive/2007/05/14/1608624.aspx
liuyuwuwolf
2008-10-19
打赏
举报
回复
我在提供一种相对简单的上传文件操作
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
String dir = request.getSession().getServletContext().getRealPath("/")
+ File.separator + "uploadDir";
String fileName="";
DiskFileUpload fu = new DiskFileUpload();
fu.setSizeMax(10485760); // 10M
// fu.setRepositoryPath( "c:/b" );
// 设置最多只允许在内存中存储的数据,单位:字节
fu.setSizeThreshold(4096);
System.out.println("得到请求内容的长度:" + request.getContentLength());
try {
List fileItems = fu.parseRequest(request);
if (fileItems.size() > 0) {
System.out.println("上传文件数目:" + fileItems.size());
}
Iterator iter = fileItems.iterator();
while (iter.hasNext()) {
FileItem item = (FileItem) iter.next();
fileName = new File(item.getName()).getName();
File destDir = new File(dir);
if (!destDir.exists()) {
destDir.mkdirs();
}
File file = new File(destDir, fileName);
item.write(file);
}
Workbook workbook = Workbook.getWorkbook(new File(dir+File.separator+fileName));
Sheet sheet = workbook.getSheet(0);
Cell cell = null;
int columnCount = sheet.getColumns();
int rowCount = sheet.getRows();
for (int i = 0; i < rowCount; i++) {
for (int j = 0; j < columnCount; j++) {
cell=sheet.getCell(j, i);
System.out.print(cell.getContents().trim());
System.out.print("\t");
}
System.out.print("\n");
}
// 关闭它,否则会有内存泄露
workbook.close();
} catch (FileUploadException e1) {
e1.printStackTrace();
} catch (Exception e1) {
e1.printStackTrace();
}finally
{
File deleteFile=new File(dir+File.separator+fileName);
deleteFile.delete();
}
}
East271536394
2008-10-19
打赏
举报
回复
其实上传文件有蛮多的方式 ,
看看你是用哪种方式,
我用的是这种,
package com.upload;
import com.jspsmart.upload.SmartUpload;
/*****
*
*author:East(张栋芳)
*date: 2008-7-19
*note: 上传文件和下载文件
*/
public class Upload {
/***
*
*上传文件平
*/
public void upLoad(){
// 新建一个SmartUpload对象
SmartUpload supload = new SmartUpload();
// 上传初始化
supload.initialize(pageContext);
// 限制每个上传文件的最大长度
supload.setMaxFileSize(10000);
// 限制总上传数据的长度。
supload.setTotalMaxFileSize(20000);
// 设定允许上传的文件(通过扩展名限制),仅允许doc,txt文件。
supload.setAllowedFilesList("doc,txt");
// 设定禁止上传的文件(通过扩展名限制),禁止上传带有exe,bat,
//jsp,htm,html扩展名的文件和没有扩展名的文件。
supload.setDeniedFilesList("exe,bat,jsp,html,htm");
// 上传文件
supload.upload();
// 将上传文件全部保存到指定目录
int count = supload.save("/upload");
com.jspsmart.upload.SmartFile file = supload.getFiles().getFile(0);
//文件名
String fileName = file.getFieldName();
}
/***
*
*下载文件
*/
public void downLoad(){
SmartUpload su = new SmartUpload();
su.initialize(pageContext);
// 设定contentDisposition为null以禁止浏览器自动打开文件,
//保证点击链接后是下载文件。若不设定,则下载的文件扩展名为
//doc时,浏览器将自动用word打开它。扩展名为pdf时,
//浏览器将用acrobat打开
su.setContentDisposition(null);
su.downloadFile("/upload/test.doc");
}
}
miluboy
2008-10-19
打赏
举报
回复
public ActionForward doAdd(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response) throws Exception {
GoodsForm goodsForm = (GoodsForm) form;// TODO Auto-generated method stub
FormFile picFile = goodsForm.getPicFile();
//得到唯一的文件名
String fn = "uploadfiles/" + this.getUniqueName(picFile.getFileName());
//得到物理路径
ServletContext application = request.getSession().getServletContext();
String realPath = application.getRealPath("/" + fn);
System.out.println(realPath);
//保存
FileOutputStream os = new FileOutputStream(realPath);
os.write(picFile.getFileData());
os.close();
//设置实体类的相关属性
goodsForm.getGoods().setPic(fn);
System.out.println("保存至数据库的路径:"+fn);
//调用业务类对Goods类进行处理
response.getWriter().println("<img src='"+fn+"' >");
return null;
}
String getUniqueName(String oldName)
{
int dotIndex = oldName.lastIndexOf(".");
String extName = "";
if( dotIndex >= 0 )
extName = oldName.substring(dotIndex);
return df.format(new Date()) + extName;
}
static SimpleDateFormat df = new SimpleDateFormat("yyyyMMddHHmmssSSS");
}
但愿能帮上你
SWFUpload
实现
多
文件上传
SWFUpload是一个开源的JavaScript库,它允许网页在Flash的支持下
实现
高级的
文件上传
功能
,包括多文件选择、进度条显示、预览等。在Web开发中,尤其是在处理大量图片或者文档上传时,SWFUpload提供了高效且用户体验...
SpringMVC
文件上传
,多
文件上传
实例
在这个“SpringMVC
文件上传
,多
文件上传
实例”中,我们将深入探讨如何在SpringMVC环境中
实现
文件上传
功能
,包括单个
文件上传
以及多个文件的批量上传。 1. **
文件上传
原理**:
文件上传
是通过HTTP协议的POST请求来...
在Web API中使用jQuery AJAX
实现
文件上传
的例子
在现代Web应用中,
文件上传
是一个常见的
功能
,它允许用户向服务器提交各种类型的文件。本教程将详细介绍如何在ASP.NET Web API中结合jQuery的AJAX方法
实现
文件上传
。 首先,我们需要在客户端创建一个HTML表单,用于...
HTML5 CSS3 :无插件拖拽上传图片实例源码
这种技术使得用户可以通过直接在页面上拖动文件到指定区域,
实现
快速、直观的
文件上传
,大大提升了交互体验。 首先,HTML5的拖放API允许开发者创建可拖动元素和接受拖放的区域。在HTML中,我们可以为任何元素添加`...
commons-fileupload-1.2.1.jar和commons-io-1.3.2.jar程序文件
在案例中,`lichao77821`在百度空间上分享了关于如何使用这两个库的示例,这可能是介绍如何在Java Web应用中
实现
文件上传
功能
的教程。使用这两个库,开发人员可以避免手动处理复杂的HTTP多部分解析,而是通过调用库...
Web 开发
81,122
社区成员
341,744
社区内容
发帖
与我相关
我的任务
Web 开发
Java Web 开发
复制链接
扫一扫
分享
社区描述
Java Web 开发
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章