国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > JavaScript > 正文

jquery ajaxfileupload異步上傳插件

2019-11-19 14:53:32
字體:
來源:轉載
供稿:網友

本文實例為大家分享了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因此你知道的。

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持武林網。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 鲜城| 登封市| 营山县| 凤翔县| 贡山| 东至县| 龙海市| 沭阳县| 临安市| 文登市| 富顺县| 于都县| 米易县| 定边县| 淮安市| 桐城市| 湖口县| 廉江市| 迁安市| 财经| 济南市| 正阳县| 云和县| 栖霞市| 南郑县| 建昌县| 潞西市| 吉安市| 大宁县| 清新县| 资阳市| 古交市| 射洪县| 万荣县| 汉阴县| 临澧县| 广河县| 罗定市| 古交市| 昌平区| 宜昌市|