当前位置:Gxlcms > AJAX > jquery中的ajax异步上传

jquery中的ajax异步上传

时间:2021-07-01 10:21:17 帮助过:22人阅读

找了好久终于在网上找到了ajax异步上传文件的方法,不过网上大多数是php的 ,我改为struts2写的 大同小异,希望对学习java的人有一定的帮助。我上传的是音乐文件。

ajaxfileupload.js这个js文件是主要文件,一定要导入。

 jsp页面 ,其中我还做了div的隐藏*****************************

  1. <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
  2. <%
  3. String path = request.getContextPath();
  4. String basePath = request.getScheme()+"://"+request.getServerName()+
  5. ":"+request.getServerPort()+path+"/";
  6. %>
  7. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
  8. <html>
  9. <head>
  10.  <base href="<%=basePath%>">
  11.  <title>Uploadify</title>
  12. <style type="text/css">
  13. #div1{
  14. color: #000000; font-size: 12px;
  15. border: 0px solid #74B3DC;
  16. color: #000;
  17. background: #fff;
  18. display:none;
  19. }
  20. </style>
  21.  <script type="text/javascript" src="js/jquery-1.3.2.min.js"></script>
  22. <script type="text/javascript" src="js/ajaxfileupload.js"></script>
  23. <!-- 执行上传文件操作的函数 -->
  24. <script type="text/javascript">
  25. function ajaxFileUpload(){
  26. $.ajaxFileUpload(
  27. {
  28. url:'uploadAction.action', //需要链接到服务器地址
  29. secureuri:false,
  30. fileElementId:'upload', //文件选择框的id属性
  31. dataType: 'json', //服务器返回的格式
  32. success: function (data, status) //相当于java中try语句块的用法
  33. {
  34. // alert(data);
  35. var ss =data;
  36. // alert(ss);
  37. var mp3Name = ss.split(";");
  38. for(var i=0; i<mp3Name.length;i++) {
  39. //alert(mp3Name[i]);
  40. $('#songName').val(mp3Name[0]);
  41. $('#songsiger').val(mp3Name[1]);
  42. }
  43. $('#result').html('添加成功');
  44. },
  45. error: function (data, status, e) //相当于java中catch语句块的用法
  46. {
  47. //alert("222.");
  48. $('#result').html('添加失败');
  49. }
  50. }
  51. );
  52. target=document.getElementById('div1');
  53. if (target.style.display=="block"){
  54. target.style.display="none";
  55. } else {
  56. target.style.display="block";
  57. }
  58. }
  59. </script>
  60. </head>
  61. <body>
  62. <form method="post" action="uploadAction.action" enctype="multipart/form-data">
  63. <input type="file" id="upload" name="upload"/>
  64. <input type="button" value="上传文档" onclick="ajaxFileUpload()"/>
  65. <div id="result"></div>
  66. <div id="div1">
  67. 歌曲<input type="text" id="songName" name="songName" value="">
  68. 歌手 <input type="text" id="songsiger" name="songName" value="">
  69. <input type="button" value="提交文档信息" />
  70. </div>
  71. </form>
  72. </body>
  73. </html>

action上传后台代码*************************************

  1. package action;
  2. import java.io.File;
  3. import java.io.IOException;
  4. import java.io.OutputStream;
  5. import org.apache.commons.io.FileUtils;
  6. import org.apache.struts2.json.annotations.JSON;
  7. import org.farng.mp3.MP3File;
  8. import org.farng.mp3.TagException;
  9. import org.farng.mp3.id3.AbstractID3v2;
  10. import org.farng.mp3.id3.ID3v1;
  11. import org.farng.mp3.lyrics3.AbstractLyrics3;
  12. import com.base.BaseAction;
  13. import com.opensymphony.xwork2.ActionSupport;
  14. public class Upload extends BaseAction {
  15. private static final long serialVersionUID = -4848248679889814408L;
  16. private String fileName;
  17. private File upload;
  18. public File getUpload() {
  19. return upload;
  20. }
  21. public void setUpload(File upload) {
  22. this.upload = upload;
  23. }
  24. public void setUploadFileName(String fileName) {
  25. this.fileName = fileName;
  26. }
  27. /*
  28. * 歌曲上传 上传操作
  29. */
  30. public void uploadAction() throws IOException {
  31. System.out.println("进入了该方法!");
  32. String targetDirectory = "D:\\upload";
  33. System.out.println(upload);
  34. File target = new File(targetDirectory, fileName);
  35. FileUtils.copyFile(upload, target);
  36. String path = targetDirectory+"\\"+fileName;
  37. try {
  38. MP3File file = new MP3File(path);//1,lyrics
  39. AbstractID3v2 id3v2 = file.getID3v2Tag();
  40. ID3v1 id3v1 = file.getID3v1Tag();
  41. String ss = "";
  42. if (id3v2 != null) {
  43. System.out.println("id3v2");
  44. ss = id3v2.getAlbumTitle()+";"+id3v2.getSongTitle()+";"+id3v2.getLeadArtist();
  45. //String str = "{'msg','"+ss+"'}";
  46. String str = ss;
  47. outPut(str);
  48. System.out.println(id3v2.getAlbumTitle());//专辑名
  49. System.out.println(id3v2.getSongTitle());//歌曲名
  50. System.out.println(id3v2.getLeadArtist());//歌手
  51. } else {
  52. System.out.println("id3v1");
  53. System.out.println(id3v1.getAlbumTitle());
  54. System.out.println(id3v1.getSongTitle());
  55. System.out.println(id3v1.getLeadArtist());
  56. }
  57. AbstractLyrics3 lrc3Tag = file.getLyrics3Tag();
  58. if (lrc3Tag != null) {
  59. String lyrics = lrc3Tag.getSongLyric();
  60. System.out.println(lyrics);
  61. }
  62. } catch (IOException e) {
  63. e.printStackTrace();
  64. } catch (TagException e) {
  65. e.printStackTrace();
  66. }
  67. System.out.println("over");
  68. }
  69. }

struts.xml配置文件*********************************

  1. <?xml version="1.0" encoding="UTF-8" ?>
  2. <!DOCTYPE struts PUBLIC
  3. "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
  4. "http://struts.apache.org/dtds/struts-2.0.dtd">
  5. <struts>
  6. <constant name="struts.i18n.encoding" value="UTF-8"/>
  7. //设置上传文件最大量
  8. <constant name="struts.multipart.maxSize" value="10485760"/>
  9. <package name="upload" namespace="/" extends="struts-default" >
  10. <action name="uploadAction" class="action.Upload" method="uploadAction">
  11. <result name="success">/index.jsp</result>
  12. </action>
  13. </package>
  14. </struts>

  后来经过调试,发现火狐和ie不兼容 导致无执行争取结果,所以我上传ajaxfileupload.js 我修改了源码

以上是本文给大家介绍jquery中的ajax异步上传,希望对大家有所帮助。

人气教程排行