社区
Web 开发
帖子详情
文件上传功能的实现
树成
2008-10-19 12:44:37
我在实现文件上传功能的时候,总是不能够获得完整的上传数据,在网络中流的available()方法是无效的,所以我从http头的content-length属性中获得上传长度,但是当上传长度超过1M的时候获得的上传数据又不全了,请问有没有好的办法获得完整的上传数据?
...全文
419
5
打赏
收藏
文件上传功能的实现
我在实现文件上传功能的时候,总是不能够获得完整的上传数据,在网络中流的available()方法是无效的,所以我从http头的content-length属性中获得上传长度,但是当上传长度超过1M的时候获得的上传数据又不全了,请问有没有好的办法获得完整的上传数据?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用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");
}
但愿能帮上你
java操作mongoDB
实现
文件上传
预览打包下载
主要
功能
:
文件上传
、下载、预览、打包下载
Android中FTP含进度上传、下载、删除文件
Android中使用的FTP上传、下载,含有进度。但是本应用没有
实现
UI部分,具体怎么去定义进度条需要自己去
实现
,主要为
功能
。下载前请看清楚,只有
功能
实现
部分,不喜勿下。(声明:积分不是我设置的,是CSDN动态算的。我也是才发现好高的分...)
基于微信小程序原生开发从头
实现
小程序常见
功能
(基础篇)
基于微信小程序原生开发从头
实现
小程序常见
功能
,包括小程序开发基础知识及常用开发
功能
如登录、找回密码、
文件上传
、多媒体
功能
、编辑表单、详情界面、列表界面等,并
实现
简单的在线预约系统相关
功能
,具体内容...
SpringMVC demo 完整源码实例下载
比较完整的SpringMVC的demo,里面包含了对数据增删改查,上传下载文件的
实现
,异常处理,拦截器,国际化等等
功能
的
实现
PHP
实现
文件上传
时间会让人遗忘一切,而整理遗忘的知识会让你在未来的路上不迷茫! 很多网站都需要
实现
文件上传
功能
,这个
功能
说大不大,说小不小,但是如果
文件上传
出现漏洞,可能会导致网站的控制权被hack拿下,所有
文件上传
的控制要做到严格严格再严格,为了更加深刻研究
文件上传
漏洞的原理,本文主要编写了
文件上传
的基本
功能
,只是简单的做了一个校验。 先看我的前端页面,这里额前端代码和原来有点小小的区别,那就是采用二进制传输的...
Web 开发
81,094
社区成员
341,711
社区内容
发帖
与我相关
我的任务
Web 开发
Java Web 开发
复制链接
扫一扫
分享
社区描述
Java Web 开发
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章