婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > 使用Ajax進行文件與其他參數的上傳功能(java開發)

使用Ajax進行文件與其他參數的上傳功能(java開發)

熱門標簽:中國地圖標注不明確情況介紹表 大眾點評400電話怎么申請 地圖標注推銷坑人 上海企業外呼系統價錢 怎樣在地圖標注文字 立陶宛地圖標注 河間市地圖標注app 電銷機器人 長春 東平縣地圖標注app

文件上傳:

記得前一段時間,為了研究Ajax文件上傳,找了很多資料,在網上看到的大部分是form表單的方式提交文件,對于Ajax方式提交文件并且也要提交表單中其他數據,發現提及的并不是很多,后來在同事的幫助下,使用ajaxfileupload最終完成了文件上傳與其他提交的操作,現在分享給大家,希望大家能有有所幫助。

操作步驟:

1 導入jar包:

我們在使用文件上傳時,需要使用到兩個jar包,分別是commons-io與commons-fileupload,在這里我使用的兩個版本分別是2.4與1.3.1版本的,需要使用JS文件與jar包最后會發給大家一個連接(如何失效請直接我給留言,我會及時更改,謝謝)。

2 修改配置文件:

當我們導入的jar包是不夠的,我們需要使用到這些jar包,由于我當時使用的是SSM框架,所以我是在application-content.xml中配置一下CommonsMultipartResolver,具體配置方法如下:

bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver"> 
  property name="maxUploadSize"> 
   value>104857600/value> 
  /property> 
  property name="maxInMemorySize"> 
   value>4096/value> 
  /property> 
 /bean> 

3 JSP文件:

大家對form表單提交問價的方式很熟悉,但是我們有很多情況下并不能直接使用form表單方式直接提交。這時候我們就需要使用Ajax方式提交,Ajax有很多的好處,比如當我們不需要刷新頁面獲希望進行局部刷新的時候,我們就可以使用Ajax。下面是我的表單提交的JSP頁面,其中包含JS的詳細步驟和HTML文件:

%@ page language="java" contentType="text/html; charset=GBK"
 pageEncoding="GBK"%>
%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
%@ include file="../commons/taglibs.jsp"%>
!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=GBK">
meta name="renderer" content="webkit">
meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
title>發布資訊/title>
 script type="text/javascript" src="${ctx}/resources/new_js/jquery.js">/script>
 script type="text/javascript" src="${ctx}/resources/js/ajaxfileupload.js">/script>
 script type="text/javascript"> 
 function save(){
  var typeId = $("#type_span_info").attr("data-id");
   if (typeof (typeId) == "undefined") {
   $("#type_p_info").show();
   return;
  } else {
   $("#type_p_info").hide();
  }
  var title = $("#title_input_info").val();
  var summary = $("#summary_input_info").val();
  var content = $("#content_textarea_info").val();
  $.ajaxFileUpload({
   url : "${ctx}/info/doUpload",
   secureuri : false,//是否需要安全協議
   fileElementId : 'file',
   type : 'POST', //文件提交的方式
   dataType : 'string',
   cache : false, //是否進行頁面緩存
   async : true, // 是否同步提交
   success : function(data) { 
     $.ajax({
     url : '${ctx}/info/addInfo?fileUrl='+data,
     type : 'post',
     data:{title:title,summary:summary,content:content,typeId:typeId},
     async : false,
     success : function(result) {
      if (result == 1) { 
       $("#del_prompt_p").text("添加成功");
       fnError3();
      } else if (result == 2) {
       $("#del_prompt_p").text("添加失敗")
       fnError2();
      } else {
       $("#del_prompt_p").text("系統錯誤");
       fnError2();
      }
     } 
    }); 
   }
   });  
 }
 /script>
/head>
body class="body_bg">
div class="main">
 !--頁面主體 start-->
 div class="main_content">
  div class="later_index clear wrap">
   div class="later_right fr">
    div class="roll_parent" id="roll_parent">
     div class="scroll_parent" id="scroll_parent">
      div class="scroll" id="scroll">/div>
     /div>
     div class="roll_son" id="roll_son">
      div class="later_content later_content1">
       div class="release_name">
        h3>
         span>發布資訊/span>
        /h3>
       /div>
       div class="issue_content">
        form action="" id="form1" method="post" enctype="multipart/form-data">
         table class="issue_tab">
          tbody>
           tr>
            td>p>i>*/i>strong>標題/strong>/p>
            /td>
           /tr>
           tr>
            td>input id="title_input_info" name="title_input_info" type="text" placeholder="最多可以輸入40個字" type="text" maxlength="40"/>
            !-- span class="colse">/span> -->
            p class="colse_tip">/p>
            !-- p class="colse_tip" id="title_p_info" style="display:hidden;">請選擇標題!/p> -->
            /td>
           /tr>
           tr>
            td>p>i>*/i>strong>摘要/strong>/p>/td>
           /tr>
           tr>
            td>input name="summary_input_info" id="summary_input_info" type="text" placeholder="最多可以輸入100個字" type="text" maxlength="100" />
            p class="colse_tip">/p>/td>
           /tr>
           tr>
            td>p>i>*/i>strong>內容/strong>/p>
            /td>
           /tr>
           tr>
            td>textarea name="content_textarea_info" id="content_textarea_info">/textarea>
            p class="colse_tip">/p>/td>
           /tr>
           tr>
            td>p>i>*/i>strong>選擇行業/strong>/p>
            p class="colse_tip" id="type_p_info" style="display:hidden;">請選擇行業!/p>/td>
           /tr>
           tr>
            td>
             div class="next_select select_width select_bg" id="next_select0">
              span id="type_span_info">請選擇/span>
             /div>
             div class="select_box select_top select_width" data-id="" id="select_box0">
              ul>
               li class="curr" data-id="2">化工/li>
               li data-id="3">裝備制造/li>
               li data-id="4">生物醫藥/li>
               li data-id="5">電子信息/li>
               li data-id="6">其他/li>
              /ul>
             /div>
            /td>
           /tr>
           tr>
            td>
             input type="button" class="isue_inp_btn" value="添加圖片"/>
             input type="text" id="issue_input_text" class="issue_text" />
             input type="file" id="file" name="file" class="issue_file" onchange="javaScript:validate_img(this)" />
            /td>
           /tr> 
          /tbody> 
         /table>
        /form>
       /div>
       div class="financial_pro_icon">
        div class="financial_pro_icon_l issue_btn1">
         a href="javaScript:save();">發布/a>
        /div>
        div class="financial_pro_icon_r issue_btn1">
         a href="${ctx}/info/gotoInfo?index=2">取消/a>
        /div>
       /div>
      /div>
     /div>
    /div>
   /div>
  /div>
 /div>
 !--頁面主體 end-->
/div>
/body>
/html>

上面的代碼是我在項目實際開發的過程中所用的代碼,具體的CSS文件與JS文件我已經刪掉了,但是不會影響具體的操作,大家使用的時候只需要把其中的class文件刪掉了就可以了。好了,我們在說一說上面的代碼。首先為大家解釋一下ctx的作用,在我們項目開發的過程中,我們要求必須使用絕對路徑,所有{ctx}是我們封裝好的一個東西,就是我們的服務器地址+端口號+項目名稱。當我們使用的時候,只需要引用一下文件,就是上面直接使用的%@ include file=”../commons/taglibs.jsp”%>,當我們用的時候直接使用${ctx}就可以,大家在使用的時候就直接使用自己的本機地址端口號與項目名稱就可以。后面的/resources/new_js/jquery.js就是我們要使用的jqery.js文件的存放地址。
其實在上面的Ajax的操作中,我相當于做了兩次的Ajax的提價,但是在第一次提交的時候,后臺給我們返回一個參數,就是我們的文件存放路徑與文件名稱,在第二次提交的時候,我們將這些參數與其他參數同時上傳到后臺,并將這些參數保存到數據庫中,以便我們使用。

* 4 后臺代碼:

//文件上傳
@RequestMapping(value = "/doUpload", method = RequestMethod.POST, produces = "text/html; charset=UTF-8")
@ResponseBody
 public String doUpload(HttpServletRequest request, HttpServletResponse response) throws IOException {
  ListString> fileNames = null;
  if (request instanceof MultipartHttpServletRequest) {
   // process the uploaded file
   logger.info("=====進入文件類型選擇=====");
   fileNames = uploadAttachment(request, "file");
  }
  String url = "";
  if (fileNames.size() > 0) {
   for (int i = 0; i  fileNames.size(); i++) {
    url = url + fileNames.get(i);
    if(i  fileNames.size() - 1){
     url = url + ",";
    }
   }
  }
  return url;
 } 
//文件上傳的工具類
public ListString> uploadAttachment(HttpServletRequest request, String type) throws IOException {
  MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request;
  ListMultipartFile> files = multipartRequest.getFiles(type);
  logger.info("數據長度========>>>>>>>>>>" + files.size());
  Calendar now = Calendar.getInstance();
  int year = now.get(Calendar.YEAR);
  int month = now.get(Calendar.MONTH) + 1;
  String realPath = PropertiesUtil.getProperty("realPath");
  System.err.println("realpath=====>>>>>" + realPath);
  //String savePath = request.getSession().getServletContext().getRealPath("/") + "p_image\\" + type + "\\" + year+ "\\" + month + "\\";
  String savePath = "government"+ File.separator + "image"+ File.separator + year+ File.separator + month + File.separator;
  logger.info("保存路徑=====>" + savePath);
  ListString> fileNames = new ArrayListString>();
  for (MultipartFile multipartFile : files) {
   logger.info("--" + multipartFile.getOriginalFilename());
   String fileName = multipartFile.getOriginalFilename();
   String prefix = fileName.substring(fileName.lastIndexOf(".") + 1);
   String custName = "" + System.currentTimeMillis() + "." + prefix;
   if (UsedUtil.isNotNull(fileName)) {
    File targetFile = new File(realPath+savePath, custName);
    // fileName = year+"-"+month+"-"+fileName;
    if (!targetFile.exists()) {
     targetFile.mkdirs();
     multipartFile.transferTo(targetFile);
    }
    try {
    } catch (Exception e) {
     e.printStackTrace();
    }
    fileNames.add(savePath + custName);
   }
  }
  return fileNames;
 }
//添加咨詢
@RequestMapping(value = "/addInfo", method = RequestMethod.POST)
@ResponseBody
 public Integer addInfo(HttpServletRequest request, HttpServletResponse response,
   @RequestParam String fileUrl) {
  InfoBean bean = new InfoBean();
  if(UsedUtil.isNotNull(fileUrl)){
   bean.setImagePath(fileUrl);
  }
  MapString, Object> paramMap = ControllerUtil.request2Map(request);
  bean.setTitle((String) paramMap.get("title"));
  bean.setSummary((String) paramMap.get("summary"));
  bean.setContent((String) paramMap.get("content"));
  bean.setTypeId((String)paramMap.get("typeId"));
  return infoService.insInfo(bean);
 }

在上面的代碼中我們可以看到,在文件第一次上傳的過程中,我們首先進入到doUpload中,然后使用uploadAttachment工具類,并將文件上傳到服務器中,在上傳的過程中,我首先做了一個文件唯一名稱的操作,就是獲取當前時間的毫秒數,雖然不能絕對保證,但是到并發量小的時候可以保證不會造成文件名稱重復。然后,我將文件上傳的路徑的上傳地址寫到了.properties中,這樣的好處是當我們想更換文件上傳的路徑時,我們就可以直接修改.properties文件,而讀取.properties文件的具體方式在我的另一篇文章中講到。最后,我們在開發的過程中,文件保存一般是保存到文件服務器中,而文件服務器一般是在Linux中,而在不同的服務器中,路徑是使用斜杠還是反斜杠是不同的,所有我在這里面使用了File.separator來代替,File.separator在不同的系統中可以自動生成斜杠獲反斜杠。

以上所述是小編給大家介紹的使用Ajax進行文件與其他參數的上傳功能(java開發),希望對大家有所幫助,如果大家有任何疑問歡迎給我留言,小編會及時回復大家的,在此也非常感謝大家對腳本之家網站的支持!

您可能感興趣的文章:
  • Java使用Ajax實現跨域上傳圖片功能
  • React+ajax+java實現上傳圖片并預覽功能
  • AJAX實現數據的增刪改查操作詳解【java后臺】
  • Java后臺判斷ajax請求及處理過程詳解
  • 使用jquery 的ajax 與 Java servlet的交互代碼實例
  • java模擬ajax訪問另一個項目的controller代碼實例
  • Java+Ajax實現的用戶名重復檢驗功能實例詳解
  • jQuery的Ajax接收java返回數據方法
  • AJAX+JAVA用戶登陸注冊驗證的實現代碼
  • 原生JavaScrpit中異步請求Ajax實現方法
  • Javaweb使用cors完成跨域ajax數據交互
  • Java使用Ajax異步上傳文件

標簽:玉樹 遼寧 營口 四川 內江 銅川 益陽 本溪

巨人網絡通訊聲明:本文標題《使用Ajax進行文件與其他參數的上傳功能(java開發)》,本文關鍵詞  使用,Ajax,進行,文件,與,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《使用Ajax進行文件與其他參數的上傳功能(java開發)》相關的同類信息!
  • 本頁收集關于使用Ajax進行文件與其他參數的上傳功能(java開發)的相關信息資訊供網民參考!
  • 推薦文章
    婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av
    日韩avvvv在线播放| 欧美日韩免费观看一区二区三区 | 国产精品美女久久福利网站| 另类欧美日韩国产在线| 中文字幕佐山爱一区二区免费| 欧美日韩综合在线免费观看| 日韩成人伦理电影在线观看| 国产欧美一区二区精品忘忧草| 在线一区二区三区做爰视频网站| 亚洲va中文字幕| 高清在线观看日韩| 亚洲国产精品自拍| 久久久久久久久99精品| 欧洲精品一区二区| 国产精品中文欧美| 国产人成一区二区三区影院| 精品sm捆绑视频| 日日嗨av一区二区三区四区| 91精品国产高清一区二区三区 | 欧美在线播放高清精品| 狠狠久久亚洲欧美| 日本人妖一区二区| 丝袜诱惑制服诱惑色一区在线观看 | 9191成人精品久久| 欧美日韩国产综合久久| 国产精品白丝jk黑袜喷水| 日韩和欧美的一区| 国产亚洲一区字幕| 日韩欧美第一区| 欧美成人vr18sexvr| 在线视频亚洲一区| 亚洲精品一区二区三区福利 | 国产精品高潮久久久久无| 欧美亚洲动漫精品| 亚洲第一电影网| 精品亚洲免费视频| 3d动漫精品啪啪1区2区免费| 亚洲欧美在线高清| 国产亚洲美州欧州综合国| 国产午夜精品理论片a级大结局 | 成人性生交大合| 久久久99精品久久| 最好看的中文字幕久久| 久久久久99精品一区| 性久久久久久久久久久久| 亚洲视频综合在线| 国产精品一区二区三区乱码| 欧美国产精品专区| 亚洲自拍偷拍综合| 中文字幕一区二区三区在线观看 | 另类欧美日韩国产在线| 成人黄色电影在线| 欧美一区二区黄色| 一区二区不卡在线播放 | 热久久久久久久| 欧美一区二区三级| 综合电影一区二区三区| 最新成人av在线| 国产美女一区二区| 99精品视频一区| 91美女在线视频| 亚洲一区在线免费观看| 国产情人综合久久777777| 91视频免费播放| 国产精品成人在线观看| 亚洲免费看黄网站| 色狠狠一区二区| 亚洲精品国产视频| 欧美无乱码久久久免费午夜一区 | 午夜欧美2019年伦理| 亚洲香肠在线观看| 成人h精品动漫一区二区三区| 国产又黄又大久久| 久久激情综合网| 中文字幕在线不卡一区| 国产jizzjizz一区二区| 亚洲人精品午夜| 在线看一区二区| 国产视频911| 狠狠色狠狠色合久久伊人| 国产亚洲精品精华液| 欧美一级片免费看| 韩国成人精品a∨在线观看| 91久久免费观看| 日韩欧美你懂的| 国产精品一品二品| 成人欧美一区二区三区| 麻豆精品视频在线观看免费| 欧美日韩高清一区二区不卡 | 国产精品欧美一区喷水| 亚洲免费观看高清完整版在线| 99精品在线免费| 色欧美片视频在线观看| 久久综合五月天婷婷伊人| 亚洲天堂网中文字| 日韩免费视频一区| 免费成人av资源网| 亚洲精品美国一| 亚洲精品一区二区三区影院| 91精品国产全国免费观看| 欧美精品99久久久**| 激情成人午夜视频| 男人的天堂久久精品| 色综合久久中文综合久久牛| 亚洲妇女屁股眼交7| 久久九九久久九九| 色综合久久久久| 亚洲国产综合在线| 亚洲电影在线播放| 欧美白人最猛性xxxxx69交| 久久精品国产亚洲aⅴ| 日韩一级二级三级精品视频| 欧美一区二区女人| 日韩高清不卡在线| 欧美影院午夜播放| 丝袜国产日韩另类美女| 91片在线免费观看| 精品国产免费一区二区三区四区| 色哟哟一区二区三区| 午夜精品久久久久久久蜜桃app| 日韩久久久久久| 精品综合久久久久久8888| 国产精品丝袜在线| 久久精品99国产精品| 国产精品123| 美腿丝袜亚洲综合| 日韩你懂的在线观看| 国产精品午夜在线| 日韩美女在线视频 | 玉米视频成人免费看| 日韩一区二区三区免费看| 色综合av在线| 亚洲sss视频在线视频| 亚洲国产综合在线| 亚洲色图一区二区| 中文字幕欧美日韩一区| 日韩中文字幕区一区有砖一区| 欧美猛男超大videosgay| 国产精品妹子av| 久久亚洲综合色一区二区三区| 欧美日韩国产一级| 国精产品一区一区三区mba视频 | 国产精品少妇自拍| 国产在线视频一区二区三区| 成人性生交大片免费看中文 | 一区二区三区精品视频| 欧美一区二区三区免费| 亚洲国产综合色| 日韩欧美中文字幕公布| 黄色资源网久久资源365| 中国av一区二区三区| 高清国产一区二区三区| 色综合 综合色| 福利一区二区在线| 国产日韩欧美在线一区| 欧美在线你懂得| 色婷婷久久久亚洲一区二区三区 | 亚洲自拍与偷拍| 国产一区二区三区观看| 国产精品对白交换视频| 亚洲综合久久久久| 日韩视频国产视频| 一区二区不卡在线播放 | 亚洲一区二区三区四区在线 | 国模套图日韩精品一区二区| 奇米一区二区三区av| 美女www一区二区| 亚洲福利电影网| 亚洲欧洲精品成人久久奇米网| 国产黄人亚洲片| 国产日韩欧美亚洲| 国产精品久久久久国产精品日日 | 日韩1区2区3区| 日韩av电影天堂| 国产乱人伦偷精品视频免下载| 日韩欧美电影一区| av电影天堂一区二区在线| 蜜臀av一区二区在线观看 | 国产专区欧美精品| 中文字幕亚洲一区二区av在线| 中文字幕佐山爱一区二区免费| 五月婷婷欧美视频| 成人毛片在线观看| 777色狠狠一区二区三区| 国产嫩草影院久久久久| 亚洲大型综合色站| 99视频超级精品| 成人精品国产福利| 日韩免费成人网| 欧美男人的天堂一二区| 国产精品99久久久久久有的能看 | 国产女人aaa级久久久级| 亚洲欧美在线视频观看| 奇米一区二区三区| 国内成人精品2018免费看| 国产乱码精品一区二区三区忘忧草| 国产欧美一区二区精品婷婷 | 国产精品乱人伦中文| 精品第一国产综合精品aⅴ| 欧美国产日韩在线观看|