问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

ajaxfileupload 可以穿入 file 对象吗

发布网友 发布时间:2022-05-15 07:38

我来回答

2个回答

懂视网 时间:2022-05-15 11:59

这次给大家带来aja的异步上传插件,使用aja的异步上传插件的注意事项有哪些,下面就是实战案例,一起来看一下。

本文实例为大家分享了ajaxfileupload异步上传插件的使用方法,供大家参考,具体内容如下

服务器端采用struts2来处理文件上传。

所需环境:
jquery.js
ajaxfileupload.js
struts2所依赖的jar包
及struts2-json-plugin-2.1.8.1.jar

编写文件上传的Action

package com.ajaxfile.action;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import org.apache.struts2.ServletActionContext;
import com.opensymphony.xwork2.ActionSupport;
@SuppressWarnings("serial")
public class FileAction extends ActionSupport {
 private File file;
 private String fileFileName;
 private String fileFileContentType;
 private String message = "你已成功上传文件";
 
 public String getMessage() {
 return message;
 }
 public void setMessage(String message) {
 this.message = message;
 }
 public File getFile() {
 return file;
 }
 public void setFile(File file) {
 this.file = file;
 }
 public String getFileFileName() {
 return fileFileName;
 }
 public void setFileFileName(String fileFileName) {
 this.fileFileName = fileFileName;
 }
 public String getFileFileContentType() {
 return fileFileContentType;
 }
 public void setFileFileContentType(String fileFileContentType) {
 this.fileFileContentType = fileFileContentType;
 }
 @SuppressWarnings("deprecation")
 @Override
 public String execute() throws Exception {
 
 String path = ServletActionContext.getRequest().getRealPath("/upload");
 try {
 File f = this.getFile();
 if(this.getFileFileName().endsWith(".exe")){
 message="对不起,你上传的文件格式不允许!!!";
 return ERROR;
 }
 FileInputStream inputStream = new FileInputStream(f);
 FileOutputStream outputStream = new FileOutputStream(path + "/"+ this.getFileFileName());
 byte[] buf = new byte[1024];
 int length = 0;
 while ((length = inputStream.read(buf)) != -1) {
 outputStream.write(buf, 0, length);
 }
 inputStream.close();
 outputStream.flush();
 } catch (Exception e) {
 e.printStackTrace();
 message = "对不起,文件上传失败了!!!!";
 }
 return SUCCESS;
 }
}

struts.xml

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.1//EN" "http://struts.apache.org/dtds/struts-2.1.dtd">
<struts>
 <package name="struts2" extends="json-default">
 <action name="fileUploadAction" class="com.ajaxfile.action.FileAction">
 <result type="json" name="success">
 <param name="contentType">
  text/html
 </param>
 </result>
 <result type="json" name="error">
 <param name="contentType">
  text/html
 </param>
 </result>
 </action>
 </package>
</struts>

注意结合Action观察struts.xml中result的配置。

contentType参数是一定要有的,否则浏览器总是提示将返回的JSON结果另存为文件,不会交给ajaxfileupload处理。这是因为struts2 JSON Plugin默认的contentType为application/json,而ajaxfileupload则要求为text/html。

文件上传的jsp页面

<%@ page language="java" contentType="text/html; charset=UTF-8"
 pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>Insert title here</title>
 <script type="text/javascript" src="js/jquery.js"></script>
 <script type="text/javascript" src="js/ajaxfileupload.js"></script>
 <script type="text/javascript">
 function ajaxFileUpload()
 {
 
 $("#loading")
 .ajaxStart(function(){
 $(this).show();
 })//开始上传文件时显示一个图片
 .ajaxComplete(function(){
 $(this).hide();
 });//文件上传完成将图片隐藏起来
 
 $.ajaxFileUpload
 (
 {
 url:'fileUploadAction.action',//用于文件上传的服务器端请求地址
 secureuri:false,//一般设置为false
 fileElementId:'file',//文件上传空间的id属性 <input type="file" id="file" name="file" />
 dataType: 'json',//返回值类型 一般设置为json
 success: function (data, status) //服务器成功响应处理函数
 {
  alert(data.message);//从服务器返回的json中取出message中的数据,其中message为在struts2中action中定义的成员变量
  
  if(typeof(data.error) != 'undefined')
  {
  if(data.error != '')
  {
  alert(data.error);
  }else
  {
  alert(data.message);
  }
  }
 },
 error: function (data, status, e)//服务器响应失败处理函数
 {
  alert(e);
 }
 }
 )
 
 return false;
 }
 </script>
 </head>
 <body>
 <img src="loading.gif" id="loading" style="display: none;">
 <input type="file" id="file" name="file" />
 <br />
 <input type="button" value="上传" onclick="return ajaxFileUpload();">
 </body>
</html>

注意观察<body>中的代码,并没有form表单。只是在按钮点击的时候触发ajaxFileUpload()方法。需要注意的是js文件引入的先后顺序,ajaxfileupload.js依赖于jquery因此你知道的。

相信看了本文案例你已经掌握了方法,更多精彩请关注Gxl网其它相关文章!

推荐阅读:

怎样用jQuery验证表单密码的一致性

Ajax怎么实现下拉框无刷新联动

jQuery实现下拉菜单导航

jQuery获取DIV属性并且绑定CheckBox

done和then的区别

热心网友 时间:2022-05-15 09:07

jaxFileUpload简介 ajaxFileUpload插件是一个非常简单的基于Jquery的异步上传文件的插件...
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
如何在手机百度上删除对话记录? 结核病是什么样的疾病? 曹丕17岁得了肺痨,明知自己命不长久,还要强争王位,是不是很自私呢?_百... 古代小说常出现的病名 急求一篇"生活小窍门"(500字)的作文 至今最有什么小妙招 健康的戒烟方法 笔记本电池锁死是什么原因引起的? 黑龙江债权转让合同纠纷该怎样取证 安徽债权转让合同纠纷应该怎么样取证 《机电一体化系统设计基础》作业1、2、3、4参考答案 您对Ludo(2020电影)的评论是什么呢? 浙江省2003年7月机电一体化系统设计试题答案 求助机电一体化程序设计的题 冯浩主编《机电一体化系统设计》课后习题答案 Excel中首字母大写介词小写如何处理? 人造蟹肉可能比你想象的还要糟糕!那么有哪些可以代替蟹肉呢? 你在怀孕的时候还给家里做饭吗? 怀孕早期可以用电磁炉炒菜做饭吗? 谢娜晒出自己做的家常菜,孕妇做饭是否会影响身体? 黄色的鞋子搭配什么色裤子?… 聘用制的员工 提前解除合同 个人要负什么责任 黄色鞋子搭配什么好? 求求求求,黄色鞋子要怎么搭配 衣服.有图 解除聘用合同是开除吗 MA啥意思?在煤矿经常见到,但不知道啥意思? ikbc的机械键盘 实体店有价格过千的吗 包头市蒙银小额贷款股份有限公司怎么样? 关于测量用的GPS 想买件外衣,如果买冲锋衣在室内平时工作场合穿合适不合适,请百度网友们帮忙说下看法.身高178,体重165. 英女王伊丽莎白一世真的是“童贞女王”? 申报消防审核要花多少钱 电大机电一体化系统设计基础形成性考核册答案 据说伊丽莎白一世女王秃头,这是真的吗? 哥本哈根减肥法的鳕鱼能不能用别的鱼替代,比如草鱼鲤鱼什么的! 自考机电一体化系统设计真题及答案 求一个机电一体化的毕业设计题目 北广购鳕鱼是真货吗? 伊丽沙白女王为什么终生不嫁 做意大利香煎鳕鱼,买不到洋香菜,可以用什么代替? 消防报审费用大概多少 是根据什么收的 急求一道机电一体化设计题的答案!! 做“鳕鱼块”用的“鸡油”可以用什么代替? 加勒比海盗中,为什么伊丽莎白要出卖杰克 设计一个真实的机电一体化系统需要考虑哪些因素 消防报验收费怎么样? 伊丽莎白二世身上佩戴的是什么勋章、什么时期获得的,获得原因是什么,谁能解释一下 机电一体化系统,设计指标和评价标准应包括哪些? 消防申报要收费的吗? 给私人老板开车的利弊