真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

如何使用Ajax進(jìn)行文件與其他參數(shù)的上傳功能-創(chuàng)新互聯(lián)

這篇文章主要為大家展示了“如何使用Ajax進(jìn)行文件與其他參數(shù)的上傳功能”,內(nèi)容簡(jiǎn)而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領(lǐng)大家一起研究并學(xué)習(xí)一下“如何使用Ajax進(jìn)行文件與其他參數(shù)的上傳功能”這篇文章吧。

成都創(chuàng)新互聯(lián)公司服務(wù)項(xiàng)目包括宿松網(wǎng)站建設(shè)、宿松網(wǎng)站制作、宿松網(wǎng)頁(yè)制作以及宿松網(wǎng)絡(luò)營(yíng)銷策劃等。多年來,我們專注于互聯(lián)網(wǎng)行業(yè),利用自身積累的技術(shù)優(yōu)勢(shì)、行業(yè)經(jīng)驗(yàn)、深度合作伙伴關(guān)系等,向廣大中小型企業(yè)、政府機(jī)構(gòu)等提供互聯(lián)網(wǎng)行業(yè)的解決方案,宿松網(wǎng)站推廣取得了明顯的社會(huì)效益與經(jīng)濟(jì)效益。目前,我們服務(wù)的客戶以成都為中心已經(jīng)輻射到宿松省份的部分城市,未來相信會(huì)繼續(xù)擴(kuò)大服務(wù)區(qū)域并繼續(xù)獲得客戶的支持與信任!

操作步驟:

1 導(dǎo)入jar包:

我們?cè)谑褂梦募蟼鲿r(shí),需要使用到兩個(gè)jar包,分別是commons-io與commons-fileupload,在這里我使用的兩個(gè)版本分別是2.4與1.3.1版本的,需要使用JS文件與jar包最后會(huì)發(fā)給大家一個(gè)連接(如何失效請(qǐng)直接我給留言,我會(huì)及時(shí)更改,謝謝)。

2 修改配置文件:

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

 
   
   104857600 
   
   
   4096 
   
 

3 JSP文件:

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

<%@ page language="java" contentType="text/html; charset=GBK"
 pageEncoding="GBK"%>
<%@taglib prefix="c" uri="/tupian/20230522/
<%@ include file="../commons/taglibs.jsp"%>






發(fā)布資訊
 
 
  
 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,//是否需要安全協(xié)議
   fileElementId : 'file',
   type : 'POST', //文件提交的方式
   dataType : 'string',
   cache : false, //是否進(jìn)行頁(yè)面緩存
   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("系統(tǒng)錯(cuò)誤");
       fnError2();
      }
     } 
    }); 
   }
   });  
 }
 



 
 
  
   
    
     
      
     
                             

         發(fā)布資訊         

       
                                                              

*標(biāo)題

                                                                           

                                                              

*摘要

                                                 

                                    

*內(nèi)容

                                                              

                                    

*選擇行業(yè)

            請(qǐng)選擇行業(yè)!

                                                                 請(qǐng)選擇                                           
                   化工                裝備制造                生物醫(yī)藥                電子信息                其他               
                                                                                                                                                                                                     發(fā)布                            取消                                              

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

* 4 后臺(tái)代碼:

//文件上傳
@RequestMapping(value = "/doUpload", method = RequestMethod.POST, produces = "text/html; charset=UTF-8")
@ResponseBody
 public String doUpload(HttpServletRequest request, HttpServletResponse response) throws IOException {
  List fileNames = null;
  if (request instanceof MultipartHttpServletRequest) {
   // process the uploaded file
   logger.info("=====進(jìn)入文件類型選擇=====");
   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 List uploadAttachment(HttpServletRequest request, String type) throws IOException {
  MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request;
  List files = multipartRequest.getFiles(type);
  logger.info("數(shù)據(jù)長(zhǎng)度========>>>>>>>>>>" + 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);
  List fileNames = new ArrayList();
  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);
  }
  Map 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);
 }

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


以上是“如何使用Ajax進(jìn)行文件與其他參數(shù)的上傳功能”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對(duì)大家有所幫助,如果還想學(xué)習(xí)更多知識(shí),歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!


當(dāng)前名稱:如何使用Ajax進(jìn)行文件與其他參數(shù)的上傳功能-創(chuàng)新互聯(lián)
當(dāng)前網(wǎng)址:http://weahome.cn/article/ceejcj.html

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部