java上传flash
⑴ flash和java的问题
flash和java交互需要有javascript 和flex的基础。
一、在网页中通过JavaScript调用Flash里的ActionScript:
可以通过ExternalInterface的addCallback方法,在Flash里注册一个可以供网页上的JavaScript或ActiveX调用的方法,具体代码如下:
程序代码
import flash.external.*;
var methodName:String = "PlayBB";
var instance:Object = null;
var method:Function = playB;
var ws:Boolean = ExternalInterface.addCallback(methodName, instance, method);
在JavaScript中调用时,需要为Flash所在的Object标签设置一个ID,并且设置allowScriptAccess属性,示例代码如下:
程序代码
<object id="topFlash" name="topFlash" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=7,0,19,0" width="686" height="101">
<param name="movie" value="_top.swf" />
<param name="quality" value="high" />
<param name="allowScriptAccess" value="always" />
<embed allowScriptAccess="always" src="_top.swf" quality="high" pluginspage="http://www.macromedia.com/go/getflashplayer" type="application/x-shockwave-flash" width="686" height="101"></embed>
</object>
网页中的JavaScript具体的调用示例:
程序代码
function thisMovie(movieName) {
if (navigator.appName.indexOf("Microsoft") != -1) {
return window[movieName]
}
else {
return document[movieName]
}
}
("topFlash").PlayBB();
二、在Flash的ActionScript中调用网页里的JavaScript:
直接使用ExternalInterface的Call方法就可以了,示例代码如下:
程序代码
import flash.external.*;
var obj:Object = ExternalInterface.Call("JavaScript方法", "参数");
参数可以是任何As中的类型,在调用时Flash会自动封装,多参数使用,分隔。
⑵ 怎样上传flash文件
第一步:用flashpaper软件将word文档转换为flash文件,还没有安装flashpaper软件,先网络下载并安装flashpaper软件。 双击flashprinter.exe打开程序主窗口,将需要转换的word文档直接拖动至窗口中,如下图。
第六步:点击“确定”按钮,此时即可以浏览已上传、编辑成功的flash文件了。
⑶ java实现文件上传及进度条的几种做法 详细�0�3
4、刚刚提醒了我,还可以直接开发浏览器插件。 上述四种方法的比较: 1、开发简单,由于要定时起一个HTTP 连接去获得进度信息,因此,发生的连接请求也增多 ,另外,在低速的情况下,常常会出各种各样的BUG,网络环境的差异,还造成那个周期很 难选择。 2、开发较复杂,COMET 本身需要服务器的支持,这样TOMCAT 至少得选6.0,否则服务器长连 接,压力肯定受不了,但是,性能相对好一些,由于一次上传实际上只启动了两个HTTP 链接 请求,比起AJAX 来说,那是要少很多请求了。另外一个优点是,COMET 将使得服务器可以主 动将进度情况汇报给客户端,因此,客户端的进度条相对来说,要准确一点。 3、目前看来解决方案最好的一个了,虽然开发需要涉及到 FLASH、JAVASCRIPT、以及 JAVA 的 开发,但是代码量都不是很多,因此,复杂程度相对属于中等程度。但是FLASH 也有几个问 题:第一、浏览器 FLASH 版本兼容问题,第二、FLASH 是通过获得发送数据的进度来体现进度 条的,因此虽然不需要服务器端开发进度部分的代码,但是进度的展现有些不是很准确,经 常会有一开始速度很快,但是后面越来越慢的情况。 4、就不说了,开发肯定是最麻烦的,但是进度条效果肯定是最好的,但要给每种浏览器都 要搞个插件,还是比较痛苦的。 总结一下,希望对大家有帮助。 2 其实很麻烦的,之前试过,会有下面几个问题: 第一、服务器端一定要选择支持HTTP 长连接的服务器,否则操作系统的线程限制,会导致并 发降低。 第二、除非原来就采用的是COMET 的进度方式,否则,你要把周期获得进度的方式,改成 COMET 的方式,那很郁闷的,COMET 要服务器主动把进度信息用JAVASCRIPT 的方式发回客户端 ,所以需要把结构转化为JAVASCRIPT 调用才行。 第三、对于不同的浏览器,处理 JAVASCRIPT 的方式是不一样的,我试验的结果是,IE 会在收 到一定数量的JAVASCRIPT 之后才执行,所以虽然我在服务器端每次都调用了flush 方法,但 是界面上还是需要等一段时间才能响应。而这段时间又不好控制了,因为上传文件大小的不 一样,导致了下发的JAVASCRIPT 数量也不一样,所以基本很难达到FLASH 那样的效果。 其实如果已经决定采用flash 了,那就不需要再去修改服务器端的代码了,因为那个进度信 息服务器发不发都不会影响到代码的执行,反正FLASH 本身已经提供了进度指示了,所以, 说简单地,要改成FLASH 上传,你直接做个FLASH 客户端就好了,不需要再改服务器端了。 对了,还有一种情况需要改服务器端,那就是FLASH 上传多个文件是采用多线程上传的,因 此如果你一次上传多个文件,那就需要改服务器端了。需要在所有线程上传完成的情况下, 再去修改数据库。
⑷ java上传成功后怎么触发其他操作
java get方式异步上传_简述Java异步上传文件的三种方式 原创
2021-02-13 16:31:03
yi bbbian
码龄4年
关注
本文为大家分享了三种Java异步上传文件方式,供大家参考,具体内容如下
用第三方控件,如Flash,ActiveX等浏览器插件上传。
使用隐藏的iframe模拟异步上传。
使用XMLHttpRequest2来实现异步上传。
第一种使用浏览器插件上传,需要一定的底层编码功底,在这里我稿困就不讲了,以免误人子弟,提出这点大家可以自行网络。
第二种使用隐藏的iframe模拟异步上传。为什么在这里说的是模拟呢?因为我们其实是将返回结果放在了一个隐藏的iframe中,所以才没有使当前页面跳转,感觉就像是异步操作一样。
隐藏的iframe上传文件
附件:
正在上传...
// 上传完成后的回调
function uploadFinished(fileName) {
addToFlist(fileName);
loading(false);
}
function addToFlist(fname) {
var temp = ["
",
fname,
"删除",
"
"
];
$("#flist").append(temp.join(""));
}
function loading(showloading) {
if (showloading) {
$("#uptxt").show();
} else {
$("#uptxt").hide;
}
}
这基敬答种技术有两个关键的地方:
1.form会指定target,提交的结果定向返回到隐藏的ifram中。(即form的target与iframe的name属性一致)。
2.提交完成后,iframe中页面与主页面通信,通知上传结果及服务端文件信息
如何与主页面通信呢?
我们用nodejs在接收完了文件后返回了一个window.parent.主页面定义的方法,执行后可以得知文件上传完成。代码很简单:
router.post('/upload2', multipartMiddleware, function(req, res) {
var fpath = req.files.myfile.path;
var fname = fpath.substr(fpath.lastIndexOf('\\') + 1);
setTimeout(function {
var ret = ["
"window.parent.uploadFinished('" + fname + "');",
""];
res.send(ret.join(""搏慧));
}, 3000);
});
执行后可以打开开发人员选项,你会发现隐藏iframe中返回了服务器的一些数据。
第三种使用XMLHttpRequest2来进行真正的异步上传。
还是先贴出代码:
执行后可以打开开发人员选项,你会发现隐藏iframe中返回了服务器的一些数据。第三种使用XMLHttpRequest2来进行真正的异步上传。还是先贴出代码:
xhr level2 异步上传
附件:
正在上传...
停止上传
function upload {
// 1.准备FormData
var fd = new FormData;
fd.append("myfile", $("#myfile")[0].files[0]);
// 创建xhr对象
var xhr = new XMLHttpRequest;
// 监听状态,实时响应
// xhr 和 xhr.upload 都有progress事件,xhr.progress是下载进度,xhr.upload.progress是上传进度
xhr.upload.onprogress = function(event) {
if (event.lengthComputable) {
var percent = Math.round(event.loaded * 100 / event.total);
console.log('%d%', percent);
$("#upprog").text(percent);
}
};
// 传输开始事件
xhr.onloadstart = function(event) {
console.log('load start');
$("#upprog").text('开始上传');
$("#stopbtn").one('click', function { xhr.abort; $(this).hide();});
loading(true);
};
// ajax过程成功完成事件
xhr.onload = function(event) {
console.log('load success');
$("#upprog").text('上传成功');
console.log(xhr.responseText);
var ret = JSON.parse(xhr.responseText);
addToFlist(ret.fname);
};
// ajax过程发生错误事件
xhr.onerror = function(event) {
console.log('error');
$("#upprog").text('发生错误');
};
// ajax被取消
xhr.onabort = function(event) {
console.log('abort');
$("#upprog").text('操作被取消');
};
// loadend传输结束,不管成功失败都会被触发
xhr.onloadend = function (event) {
console.log('load end');
loading(false);
};
// 发起ajax请求传送数据
xhr.open('POST', '/upload3', true);
xhr.send(fd);
}
function addToFlist(fname) {
var temp = ["
",
fname,
"删除",
"
"
];
$("#flist").append(temp.join(""));
}
function delFile(fname) {
console.log('to delete file: ' + fname);
// TODO: 请实现
}
function loading(showloading) {
if (showloading) {
$("#uptxt").show();
$("#stopbtn").show();
} else {
$("#uptxt").hide();
$("#stopbtn").hide();
}
}
代码有点多,但是通俗易懂。使用过AJAX的人都知道,XHR对象提供了一个onreadystatechange的回调方法来监听整个请求/响应过程。在XMLHttpRequest2级规范中又多了几个进度事件。有以下6个事件:
1.loadstart:在接收到响应数据的第一个字节时触发。
2.progress:在接收响应期间持续不断地触发。
3.error:在请求发生错误时触发。
4.abort:在因为调用abort方法而终止连接时触发。
5.load:在接收到完整的响应数据时触发。
6.loadend: 在通信完成或者触发error,abort,load事件后触发。
这次我们可以解读代码:当传输事件开始后,我们便在停止传送按钮上添加点击事件,内置了abort方法可以停止传送。若不点则会正常上传直到传送完毕为止。其后台代码类似第二种方法。
三种方法各有优劣,做个简单的小结吧。
第三方控件交互性和可控性好,因为接近底层,其性能也是很优秀的。但是由于编写难度大通常需要自己安装插件,有时可能需要自己进行编写。
隐藏的iframe方法我个人觉得是非常有思想的一个方法,iframe可以帮我们做很多事。这种方式具有广泛的浏览器兼容性而且不需要安装插件。但是它交互性差,上传过程不可控,而且性能也是很一般的。
XHR2级的纯ajax上传,它必须要版本比较高一点的浏览器(ie9+)。但是它交互性特别好,可以看到上传进度并且是可控的。
⑸ java web 项目如何实现视频上传然后播放功能
搞清楚两个问题:上传到自己的服务器还是第三方平台?播放器实用Flash还是H5播放器?
如果是上传到自己的服务器,使用H5播放。那上传视频就和普通的文件上传一样。都是通过Http上传。前端可以使用form表单上传也可以使用ajax异步上传。后台可以使用apache的Common-fileUpload工具来解析并保存文件。然后生成一个访问路径。将访问路径返回给前端的 video标签的src属性即可。通过几个简单的属性或脚本就能控制播放。
如果是上传到第三方平台,例如腾讯视频、爱奇艺、优酷等。他们都有开发者平台或者开放平台。一般都有一些jar工具类或者模板案例提供给你的。你上传之后,也有返回路径给你。这是一般都是嵌入它们的Flash插件。所以你只需要将那段Flash插件的HTML代码放入你的网页中就可以播放了。好处是,不需要自己存储。不需要准备播放器。坏处是,可能有广告。不是可能。是一定会有。
⑹ 如何在JAVA中添加flash动画
用的是
<object>
<embed src="你要添加的flash" width="宽" height="高">
</object>
就是这样的
⑺ 请教Java怎样实现跨服务器文件上传
你好!
另一台机器也要有处理文件上传的WEB程序郑庆,你可以喊蠢握参考Stream上传插件(支持HTML5和Flash两种方式上传)
Stream 上传插件
Stream 是解决不同浏览器上传文件的插件,是Uploadify的Flash版和Html5版的结合!
Stream 简介
Stream 是根据某网的文件上传插件加工而来,支持不同平台(Windows, Linux, Mac, Android, iOS)下,主流浏览器(IE7+, Chrome, Firefox, Safari, 其他)的上传工作,当然在Html5标准下,还支持文件档如的断点续传功能,有效解决大文件的Web上传问题!
主要特征
1. 源码完全开放,目前有Java、PHP、Perl三种后台语言实现
2. 支持HTML5、Flash两种方式(跨域)上传
3. 多文件一起上传
4. HTML5支持断点续传,拖拽等新特性
5. 兼容性好IE7+, FF3.6+, Chrome*,Safari4+,遨游等主流浏览器
6. 进度条、速度、剩余时间等附属信息
7. `选择文件的按钮`可以自定义
8. 简单的参数配置实现 灵活多变的功能
9. 支持文件夹上传(Chrome21+, Opera15+)
10. 支持自定义UI(V1.4+)
指定跨域上传就可以了
这些都是小鸟云的工程师告诉我的,建议你可以试试小鸟云
⑻ 怎么在java中使用flash
1.如果单独的展示FLASH的话,那就直接引用。
2.如果结合JAVA和FLASH交互等操作的话,那就得使用FLEX了,FLEX可以跟JAVA进行
通信和交互,FLEX最终生成的就是FLASH文件SWF!