濮阳杆衣贸易有限公司

主頁(yè) > 知識(shí)庫(kù) > 使用ajax跨域調(diào)用springboot框架的api傳輸文件

使用ajax跨域調(diào)用springboot框架的api傳輸文件

熱門(mén)標(biāo)簽:銷售電銷機(jī)器人詐騙 提高電話機(jī)器人接通率 地圖標(biāo)注與公司業(yè)務(wù)關(guān)系 廣西智能外呼系統(tǒng)多少錢 大學(xué)校門(mén)地圖標(biāo)注 福建微碼電話機(jī)器人 荊州智能電銷機(jī)器人 平?jīng)龈叩碌貓D標(biāo)注商戶要收費(fèi)嗎 外呼系統(tǒng)api對(duì)接

在新項(xiàng)目中使用的是springboot編寫(xiě)的api,涉及到ajax跨域請(qǐng)求和傳輸文件的問(wèn)題,在這里記錄一下
首先是前臺(tái)頁(yè)面的代碼

!DOCTYPE html>
html>
 head>
  meta charset="utf-8">
  title>test_api/title>
  script type="text/javascript" src="jquery-1.7.2.js">/script>
  script type="text/javascript">
   function test(){
    var obj = new Object;
    obj.name = $("#name").val();
    obj.age = $("#age").val();
    var file = document.getElementById("file").files[0];
    var formData = new FormData();
    formData.append("data",JSON.stringify(obj));
    formData.append("file",file);
    $.ajax({
     type:"post",
     url:"http://localhost:8187/test/upload",
     contentType:false,
     processData:false,
     data:formData,
     success:function(data){
       alert(data.msg);
     }
    });
   }
  /script>
 /head>
 body>
  div class="">
   table>
    tr>
     td>sCompany:/td>
     td>input type="text" id="name" value="tom" />/td>
    /tr>
    tr>
     td>scardtype:/td>
     td>input type="text" id="age" value="23" />/td>
    /tr>
    tr>
     td>file:/td>
     td>input type="file" id="file" />/td>
    /tr>
   /table>
   input type="button" onclick="test();" value="提交" />
  /div>
 /body>
/html>

程序入口類的代碼

package test;

import javax.servlet.MultipartConfigElement;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.web.servlet.MultipartConfigFactory;
import org.springframework.context.annotation.Bean;
import org.springframework.web.servlet.config.annotation.CorsRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;

/**
 * Hello world!
 *
 */

@SpringBootApplication
public class App 
{

  public static void main( String[] args )
  {
    SpringApplication.run(App.class, args);
  }
  //設(shè)置ajax跨域請(qǐng)求
  @Bean
  public WebMvcConfigurer corsConfigurer(){
    return new WebMvcConfigurerAdapter(){

      @Override
      public void addCorsMappings(CorsRegistry registry) {
        registry.addMapping("/**").allowedOrigins("*");
      }
    };
  }

  @Bean
  public MultipartConfigElement multipartConfigElement(){
    MultipartConfigFactory factory = new MultipartConfigFactory();
    //設(shè)置上傳文件大小限制
    factory.setMaxFileSize("10MB");
    //設(shè)置上傳總數(shù)據(jù)大小
    factory.setMaxRequestSize("15MB");
    return factory.createMultipartConfig();
  }
}

api代碼

package test.controller;

import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileOutputStream;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.multipart.MultipartHttpServletRequest;
import test.model.UploadInfo;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;

@RestController
@RequestMapping("/test")
public class TestController {

  /**
   * 上傳文件
   * @param req form請(qǐng)求
   * @return json字符串
   */
  @RequestMapping(value="/upload", method=RequestMethod.POST)
  public String uploadFile(HttpServletRequest req){ 
    // 返回結(jié)果用 json對(duì)象
    JSONObject returnObj = new JSONObject();
    //從請(qǐng)求中獲取請(qǐng)求的json字符串
    String strData = req.getParameter("data");
    //將獲取到的JSON字符串轉(zhuǎn)換為Imgidx對(duì)象
    UploadInfo info = JSON.parseObject(strData, UploadInfo.class);
    //獲取上傳的文件集合
    ListMultipartFile> files = ((MultipartHttpServletRequest)req).getFiles("file");
    MultipartFile file = files.get(0);
    // 返回信息頭部
    MapString, String> header = new HashMapString, String>();
    header.put("code", "0");
    header.put("msg", "success");
    File file1234 = new File(file.getOriginalFilename());
    //插入數(shù)據(jù)的影響的數(shù)據(jù)條數(shù)
    int result = 0;
    //將文件上傳到save
    if(!file.isEmpty()){
      try{
        byte[] arr = new byte[1024];
        BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(file1234));
        bos.write(arr);
        bos.flush();
        bos.close();
      }catch(Exception e){
        header.put("code", "-1");
        header.put("msg", "errorMsg:" + e.getMessage());
      }
    }else{
      header.put("code", "-1");
      header.put("msg", "errorMsg:上傳文件失敗,因?yàn)槲募强盏?);
    }
    String returnStr = returnObj.toJSONString(header);
    return returnStr;
  }
}

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

您可能感興趣的文章:
  • ThinkPHP 5 AJAX跨域請(qǐng)求頭設(shè)置實(shí)現(xiàn)過(guò)程解析
  • PHP Ajax跨域問(wèn)題解決方案代碼實(shí)例
  • 原生js實(shí)現(xiàn)ajax請(qǐng)求和JSONP跨域請(qǐng)求操作示例
  • PHP下ajax跨域的解決方案之window.name實(shí)例分析
  • PHP下ajax跨域的解決方案之jsonp實(shí)例分析
  • express如何解決ajax跨域訪問(wèn)session失效問(wèn)題詳解
  • Ajax跨域問(wèn)題及解決方案(jsonp,cors)
  • Ajax解決跨域之設(shè)置CORS響應(yīng)頭實(shí)現(xiàn)跨域案例詳解

標(biāo)簽:樂(lè)山 內(nèi)江 邯鄲 德陽(yáng) 衡陽(yáng) 婁底 海南 黔東

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《使用ajax跨域調(diào)用springboot框架的api傳輸文件》,本文關(guān)鍵詞  使用,ajax,跨域,調(diào)用,springboot,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問(wèn)題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無(wú)關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《使用ajax跨域調(diào)用springboot框架的api傳輸文件》相關(guān)的同類信息!
  • 本頁(yè)收集關(guān)于使用ajax跨域調(diào)用springboot框架的api傳輸文件的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    独山县| 罗甸县| 桦川县| 金寨县| 墨竹工卡县| 扶沟县| 樟树市| 娄底市| 罗城| 麻城市| 宣武区| 巢湖市| 博爱县| 东宁县| 瑞丽市| 广宁县| 龙胜| 韶关市| 玉龙| 东明县| 钟祥市| 错那县| 岫岩| 灵璧县| 襄汾县| 漳平市| 洞头县| 庐江县| 崇明县| 唐河县| 鄂伦春自治旗| 德江县| 射洪县| 昌图县| 图木舒克市| 泰州市| 北京市| 泗洪县| 遵义市| 石渠县| 桃园市|