java ajax如何实现文件下载

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java ajax如何实现文件下载相关的知识,希望对你有一定的参考价值。

java ajax如何实现文件下载

参考技术A ajax 返回一个url 然后用 .window.location.target="_ablank" ; window.localtion.href =url 看可以不 参考技术B 点击触发 ajax事件 然后后台调用 回调 主要是一个url罢了 其他的基本和Servlet一样 参考技术C import java.io.File;
import java.io.FilenameFilter;

/**
* 文件过滤器的简单实现
*
* @author ajaxfan
* @date 2010-04-17
*/
public class FileNameFilterDemo
public static void main(String[] args)
list("d:/");


/**
* 列出特定路径下的txt文件
*
* @param directoryName
* 路径名
*/
private static void list(String directoryName)
File dir = new File(directoryName);
// 确定该路径指向一个目录
if (dir.exists() && dir.isDirectory())
// 列出所有结尾为txt的文件
File[] files = dir.listFiles(new FilenameFilter()
@Override
public boolean accept(File dir, String name)
return name.endsWith("txt");

);
System.out.println(java.util.Arrays.toString(files));


本回答被提问者采纳

ajax如何 实现 文件上传



程序说明

使用说明

实例化时,第一个必要参数是file控件对象:

new QuickUpload(file);


第二个可选参数用来设置系统的默认属性,包括
属性:    默认值//说明
parameter: ,//参数对象
action:  "",//设置action
timeout: 0,//设置超时(秒为单位)
onReady: function(),//上传准备时执行
onFinish: function(),//上传完成时执行
onStop:  function(),//上传停止时执行
onTimeout: function()//上传超时时执行

还提供了以下方法:
upload:执行上传操作;
stop:停止上传操作;
dispose:销毁程序。

var QuickUpload = function(file, options) 

this.file = $$(file);

this._sending = false;//是否正在上传
this._timer = null;//定时器
this._iframe = null;//iframe对象
this._form = null;//form对象
this._inputs = ;//input对象
this._fFINISH = null;//完成执行函数

$$.extend(this, this._setOptions(options));
;
QuickUpload._counter = 1;
QuickUpload.prototype = 
//设置默认属性
_setOptions: function(options) 
this.options = //默认值
action:        "",//设置action
timeout:    0,//设置超时(秒为单位)
parameter:    ,//参数对象
onReady:    function(),//上传准备时执行
onFinish:    function(),//上传完成时执行
onStop:        function(),//上传停止时执行
onTimeout:    function()//上传超时时执行
;
return $$.extend(this.options, options || );
,
//上传文件
upload: function() 
//停止上一次上传
this.stop();
//没有文件返回
if ( !this.file || !this.file.value ) return;
//可能在onReady中修改相关属性所以放前面
this.onReady();
//设置iframe,form和表单控件
this._setIframe();
this._setForm();
this._setInput();
//设置超时
if ( this.timeout > 0 ) 
this._timer = setTimeout( $$F.bind(this._timeout, this), this.timeout * 1000 );

//开始上传
this._form.submit();
this._sending = true;
,
//设置iframe
_setIframe: function() 
if ( !this._iframe ) 
//创建iframe
var iframename = "QUICKUPLOAD_" + QuickUpload._counter++,
iframe = document.createElement( $$B.ie ? "<iframe name=\\"" + iframename + "\\">" : "iframe");
iframe.name = iframename;
iframe.style.display = "none";
//记录完成程序方便移除
var finish = this._fFINISH = $$F.bind(this._finish, this);
//iframe加载完后执行完成程序
if ( $$B.ie ) 
iframe.attachEvent( "onload", finish );
 else 
iframe.onload = $$B.opera ? function() this.onload = finish;  : finish;

//插入body
var body = document.body; body.insertBefore( iframe, body.childNodes[0] );

this._iframe = iframe;

,
//设置form
_setForm: function() 
if ( !this._form ) 
var form = document.createElement('form'), file = this.file;
//设置属性
$$.extend(form, 
target: this._iframe.name, method: "post", encoding: "multipart/form-data"
);
//设置样式
$$D.setStyle(form, 
padding: 0, margin: 0, border: 0,
backgroundColor: "transparent", display: "inline"
);
//提交前去掉form
file.form && $$E.addEvent(file.form, "submit", $$F.bind(this.dispose, this));
//插入form
file.parentNode.insertBefore(form, file).appendChild(file);

this._form = form;

//action可能会修改
this._form.action = this.action;
,
//设置input
_setInput: function() 
var form = this._form, oldInputs = this._inputs, newInputs = , name;
//设置input
for ( name in this.parameter ) 
var input = form[name];
if ( !input ) 
//如果没有对应input新建一个
input = document.createElement("input");
input.name = name; input.type = "hidden";
form.appendChild(input);

input.value = this.parameter[name];
//记录当前input
newInputs[name] = input;
//删除已有记录
delete oldInputs[name];

//移除无用input
for ( name in oldInputs )  form.removeChild( oldInputs[name] ); 
//保存当前input
this._inputs = newInputs;
,
//停止上传
stop: function() 
if ( this._sending ) 
this._sending = false;
clearTimeout(this._timer);
//重置iframe
if ( $$B.opera ) //opera通过设置src会有问题
this._removeIframe();
 else 
this._iframe.src = "";

this.onStop();

,
//销毁程序
dispose: function() 
this._sending = false;
clearTimeout(this._timer);
//清除iframe
if ( $$B.firefox ) 
setTimeout($$F.bind(this._removeIframe, this), 0);
 else 
this._removeIframe();

//清除form
this._removeForm();
//清除dom关联
this._inputs = this._fFINISH = this.file = null;
,
//清除iframe
_removeIframe: function() 
if ( this._iframe ) 
var iframe = this._iframe;
$$B.ie ? iframe.detachEvent( "onload", this._fFINISH ) : ( iframe.onload = null );
document.body.removeChild(iframe); this._iframe = null;

,
//清除form
_removeForm: function() 
if ( this._form ) 
var form = this._form, parent = form.parentNode;
if ( parent ) 
parent.insertBefore(this.file, form); parent.removeChild(form);

this._form = this._inputs = null;

,
//超时函数
_timeout: function() 
if ( this._sending )  this._sending = false; this.stop(); this.onTimeout(); 
,
//完成函数
_finish: function() 
if ( this._sending )  this._sending = false; this.onFinish(this._iframe); 


参考技术A 1、同学Ajax实现文件上传其实很简单的和传统的Form表单提交上传是不用刷新整个页面
2、这个是要看你服务器端用的是什么语言了,PHP、Java还是ASP用法都大同小异
3、前不久刚刚写了个Demo是用PHP实现的你看一下原理,是不是你想要的呢演示地址:www.erdangjiade.com/js/513.html
前端代码为:
<form class="imageform" method="post" enctype="multipart/form-data" action="upload.php"> <div class="up_status" style="display:none"><img src="loader.gif" alt="uploading"/></div> <div class="btn up_btn"> <span>添加图片</span> <input class="photoimg" type="file" name="photoimg"> </div> </form> <div class="preview_img"></div>Jquery代码:
<link rel="stylesheet" type="text/css" href="css/style.css" /> <script type="text/javascript" src="<script type="text/javascript" src="jquery.wallform.js"></script>$("body").on("change", ".photoimg", function() var obj = $(this); var imageForm = obj.parents(".imageform"); var preview_img = imageForm.next(".preview_img"); var btn = imageForm.find(".up_btn"); imageForm.ajaxForm( target: preview_img, beforeSubmit: function() imageForm.next("div.preview_img").html(""); preview_img.hide(); btn.hide(); , success: function() preview_img.show(); btn.show(); , error: function() btn.show(); preview_img.hide(); ).submit(); );PHP代码为:
PHP上传 upload.phpif (isset($_POST) and $_SERVER['REQUEST_METHOD'] == "POST") $name = $_FILES['photoimg']['name']; $size = $_FILES['photoimg']['size']; if (empty($name)) echo '请选择要上传的图片'; exit; $ext = extend($name); if (!in_array($ext, $extArr)) echo '图片格式错误!'; exit; if ($size > (1000 * 1024)) echo '图片大小不能超过1M'; exit; $image_name = time() . rand(100, 999) . "." . $ext; $tmp = $_FILES['photoimg']['tmp_name']; if (move_uploaded_file($tmp, $path . $image_name)) echo '<img src="' . $path . $image_name . '" class="preview">'; else echo '上传出错了!'; exit; 效果图:

以上是关于java ajax如何实现文件下载的主要内容,如果未能解决你的问题,请参考以下文章

ajax如何 实现 文件上传

java如何实现异步模糊查询

前后端如何实现ajax交互 https://www.imooc.com/article/10371

java ajax分页问题

教你如何使用flask实现ajax数据入库

ajax post 调用PHP函数,如何实现下载文件?ubuntu系统