- 浏览: 43653 次
- 性别:
- 来自: 北京
最新评论
-
yxl2005play:
不支持多个文件(多个<input type=" ...
JAVA上传文件进度条的实现 -
clarck_913:
您好,我看了你附件里的代码
有点疑问。
第一,web.xm ...
JAVA上传文件进度条的实现
这两天完善了一下视频转换这个东西,以前做的那套东西上传完之后就开始转换,无法适应大并发量下的视频转换(我觉得同时有10个ffmpeg进程在转视频服务器肯定要挂掉),所以我用了另一套方案,视频上传之后先不转换,把视频的基本信息存到数据库中,然后由程序定时的从数据库中读取数据,依次转换视频。具体做法是:1、上传文件,将文件名存入数据库,同时在数据库标明videostat字段为0(表示未转换)
2、通过程序,每隔30秒(根据不同情况可以改变)取出一个未转换(videostat=0)且失败次数小于5(confailtime<5)的纪录
3、开始转换视频,这里要先将数据库中videostat字段改为2(表示正在转换)不然30秒钟转换不完下个进程又会读到这条纪录开始转换......
4、等待转换进程结束,如果成功将相应纪录的videostat字段的值改为1(表示转换成功),若转换失败则将失败次数字段加一(confailtime=confailtime+1)
在鼓捣这东西的过程中,遇到了一个问题,如果一个进程先执行p.waitFor();方法而后输出命令行中的结果是不行的,即:
Code
<!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />-->int flag = p.waitFor();
InputStream inErr = p.getErrorStream();
InputStream inIns = p.getInputStream();
BufferedReader brErr = new BufferedReader(new InputStreamReader(
inErr));
BufferedReader brIns = new BufferedReader(new InputStreamReader(
inIns));
// inErr读取输出信息开始
String strsErr = "";
String strErr = brErr.readLine();
while (strErr != null) {
strsErr = strsErr + strErr + "\n";
System.out.println(strErr);
strErr = brErr.readLine();
}
// inErr读取输出信息结束
// inIns读取输出信息开始
String strsIns = "";
String strIns = brIns.readLine();
while (strIns != null) {
strsIns = strsIns + strIns + "\n";
System.out.println(strIns);
strIns = brErr.readLine();
}
<!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />-->int flag = p.waitFor();
InputStream inErr = p.getErrorStream();
InputStream inIns = p.getInputStream();
BufferedReader brErr = new BufferedReader(new InputStreamReader(
inErr));
BufferedReader brIns = new BufferedReader(new InputStreamReader(
inIns));
// inErr读取输出信息开始
String strsErr = "";
String strErr = brErr.readLine();
while (strErr != null) {
strsErr = strsErr + strErr + "\n";
System.out.println(strErr);
strErr = brErr.readLine();
}
// inErr读取输出信息结束
// inIns读取输出信息开始
String strsIns = "";
String strIns = brIns.readLine();
while (strIns != null) {
strsIns = strsIns + strIns + "\n";
System.out.println(strIns);
strIns = brErr.readLine();
}
如果这样执行的话进程会挂起,无法继续下午,而正确的方法是先读取命令行的数据,再来waitFor();
还有一点需要注意的是获得命令行的输出结果先要从错误流中获得,即(ErrorStream),而非从输入流(InputStream)中获得,很有用的经验。
发表评论
-
Hibernate主键生成方式(转)
2008-01-29 22:05 5401) assigned 主键由外部程序负责生成,无需Hibe ... -
实现JSP页面自动跳转
2008-01-30 22:01 837HTML里增加: <meta http-e ... -
JAVA中的接口和抽象类(转)
2008-03-11 17:31 650在面向对象的概念中, ... -
JAVA错误处理大集合
2008-03-15 17:19 7690、 需要标识符 a) 不在 ... -
强!!!
2008-04-01 17:51 686Java视频教程 孙鑫Java无难事 (全12CD) http ... -
字符转换 dos 命令 JDK自带的native2ascii工具完全揭密
2008-07-14 17:27 854背景:在做Java开发的时 ... -
Acegi安全系统的配置
2008-07-17 00:42 682Acegi 的配置看起来非常复杂,但事实上在实际项目的安全应用 ... -
ACEGI配置总结(1)
2008-07-18 18:39 730Acegi配置总结 1、 在web.xml中配置conte ... -
关于Struts处理异常框架的小例子
2008-07-30 17:15 750下午搞了一下Struts处理异常的框架,不错,确实很 ... -
利用commons upload+ffmpeg+mencoder完成视频的上传与转换
2008-07-31 16:41 699前一段时间朱哥一直在搞视频转换这个东东,我也一直很有 ... -
关于Struts的Token
2008-08-01 12:07 681请求有效性处理,使用令牌可以有效的防止重复提交。 protec ... -
六大代码问题检验你的JAVA知识(转)
2008-08-01 15:57 733你觉得自己是一个Java专家吗?是否肯定自己已经全面掌握了J ... -
Spring Security连接数据库查询实例
2008-08-04 00:46 897经过若干天断断续续地研究,终于做出了第一个sprin ... -
JAVA md5、SHA加密类
2008-08-04 20:25 861Code<!--<br /><br ... -
Hibernate获取数据方式与缓存使用
2008-08-16 11:03 671Hibernate获取数据的方式有不同的几种,其与缓存结合使用 ... -
使用AjaxTags实现自动完成
2008-09-22 09:42 1120最近搞的一个通讯录想要加一个Ajax的自动完成功能, ... -
Struts2&Jquery 新闻发布
2009-03-16 17:48 1009又一个新闻发布......比以前的更加人性化了,用到了Stru ... -
JAVA实现精确的加减乘除
2009-05-20 17:13 1129package lc.util; import java.ma ... -
JAVA上传文件进度条的实现
2009-08-03 19:46 5197很久不在这里发帖子了,最近在家闲来无事,想到转视频的那东西又要 ... -
利用commons upload+ffmpeg+mencoder完成视频的上传与转换
2008-07-31 16:41 916前一段时间朱哥一直在搞视频转换这个东东,我也一直很有 ...
相关推荐
标题中的"文件上传_commonsfileupload.1.2.1.zip"表明这是一个关于Apache Commons FileUpload库的1.2.1版本的压缩包。Apache Commons FileUpload是一个Java库,专门用于处理HTTP请求中的多部分/form-data数据,也...
使用`CommonsFileUpload`库处理文件上传,将图片保存到服务器的指定位置。 3. **编写FreeMarker模板**:创建一个`.ftl`文件,用来显示上传结果,包括成功信息和错误信息。 4. **配置Struts2**:在`struts.xml`中配置...
本项目“extjs3.2+struts2实现多文件上传excel并插入到数据库”是针对这一需求的具体解决方案,利用了ExtJS 3.2前端框架和Struts2后端框架进行开发。 **ExtJS 3.2** 是一个基于JavaScript的富客户端应用框架,提供...
在IT行业中,富文本编辑器(如CKEditor)与MVC框架(如Struts2)的结合使用是常见的应用场景,特别是在构建Web内容管理系统时。CKEditor是一款强大的在线文本编辑器,提供丰富的文字编辑功能,而Struts2则是一个Java...
标签"java"提示我们这是与Java编程语言相关的技术内容,具体来说是关于文件上传的库。 根据压缩包子文件的文件名称列表,我们可以推测包含以下内容: 1. `commons-fileupload-1.2.1.jar`:这是Apache Commons ...
Struts2通过`struts2-core`库中的`CommonsFileUpload`插件支持文件上传。你需要在Struts2的配置文件(struts.xml或struts.properties)中启用该插件,并配置相应的拦截器,如`params`和`fileUpload`拦截器。`...
在Struts2中,我们可以使用`Struts2`提供的`CommonsFileUpload`插件来处理文件上传。这个插件基于Apache Commons FileUpload库,允许用户通过表单提交文件。在Action类中,我们需要创建一个`File`类型的属性,与表单...
在Struts2中,我们可以使用`CommonsFileUpload`库来处理文件上传。这个库提供了处理大型文件上传的能力,并允许我们跟踪上传进度。为了实现文件上传,你需要在Action类中创建一个`List<CommonsFileUpload>`类型的...
总之,"Struts上传详解附视频"这一主题覆盖了Struts2框架下实现文件上传的关键技术和实践技巧,对于想要学习或优化Java Web应用文件上传功能的开发者来说,是一个非常有价值的资源。通过学习这些内容,你可以更好地...
在本文中,我们将深入探讨如何使用Ext3.2与Struts框架实现文件上传功能,同时解决中文乱码问题。这两个技术结合在一起,可以为Web应用提供高效、稳定的文件上传解决方案。 首先,Ext3.2是一个JavaScript库,它提供...
在文件上传过程中,`commons-io`可能会被用来处理临时文件、读取文件内容或者进行文件流的转换。 这两个库的结合使用,使得在Java中实现文件上传功能变得更加简单和可靠。首先,通过Servlet容器接收HTTP请求,然后...
在"struts2异步多文件上传和下载"的例子中,我们将探讨如何利用Struts2的特性来实现实时的、多文件上传以及带有进度条的单文件上传。 首先,文件上传在Web开发中是一项常见的需求,Struts2通过ActionContext类和...
2. **配置Servlet容器**:确保Servlet容器(如Tomcat)配置允许文件上传。这通常涉及修改`web.xml`文件,增加对POST请求的最大大小限制,以防文件过大导致服务器崩溃。 3. **创建解析器**:FileUpload库提供了`...
在Struts2框架中,实现文件上传并展示进度条效果是一项常见的需求,尤其对于大型文件上传,用户界面的进度反馈能提供更好的用户体验。本文将详细讲解如何在Struts2中实现这一功能。 首先,我们需要理解Struts2处理...
10. **测试**:在开发完成后,务必进行充分的测试,包括正常情况下的上传、边界条件测试(如上传空文件、超大文件、非法文件类型等)以及并发上传的测试。 以上是基于Struts2框架实现文件上传的基本步骤和关键知识...
在Struts2中实现多文件异步上传是一个常见的需求,它能够提高用户体验,因为用户可以在不等待所有文件上传完成的情况下继续浏览其他页面。下面将详细解释如何在Struts2中实现这一功能。 首先,我们需要理解异步上传...
在"struts2上传下载项目"中,我们可以深入理解如何利用Struts2实现文件的上传与下载功能。 首先,上传功能在Web应用中十分常见,比如用户在注册时上传头像,或者提交文档等。在Struts2中,我们主要借助`struts2-...
Struts2是一个非常流行的...以上就是Struts2中文件上传与下载的基本实现,通过这些步骤,你可以实现用户在Web应用中上传和下载文件的功能。在实际项目中,还需要根据具体需求进行调整和优化,如错误处理、进度显示等。
2. **Action处理**:与单文件上传类似,但在Action中需要处理一个文件数组。使用`CommonsMultipartRequestHandler`拦截器代替`params`,它可以处理多部分请求。 ```java public class MultiUploadAction extends ...