jquery传输文件到后端,后端处理数据。

<!--HTML代码-->
<input type="file" name="uploadFile" id="uploadFile">
<!--JQuery代码-->
$("#uploadFile").on("change", function() {

		debugger;
		var obj=$("#uploadFile")[0].files;
		var formData = new FormData();                      // 创建一个form类型的数据

		formData.append('file',obj[0]);     // 获取上传文件的数据

		$.ajax({

			"url": "",

			"type": "",

			"processData": false, // 将数据转换成对象,不对数据做处理,故 processData: false

			"contentType": false,    // 不设置数据类型

			"xhrFields": {                // 这样在请求的时候会自动将浏览器中的cookie发送给后台

				withCredentials: true

			},

    		"data": formData,

			success: function(data) {

				console.log(data)

			},

			error: function(data) {

			}

		})

	})

后端代码

			// 取得上传的文件
			MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request;
			CommonsMultipartFile file = (CommonsMultipartFile) multipartRequest.getFile("file");

			// 得到文件名称
			String realFileName = file.getOriginalFilename();
			String suffix = realFileName.substring(realFileName.indexOf("."),
					realFileName.length());

			Workbook workbook = null;
			//判断文件类型(可忽略)
			if (".xlsx".equals(suffix)) {
				workbook = new XSSFWorkbook(file.getInputStream());
			} else {
				workbook = new HSSFWorkbook(file.getInputStream());
			}

			List<WGxZdywCrm> empList = getEmpList(workbook);
			message=JSONObject.fromObject(empList);

后端可以将获取的文件传到服务器,也可以将文件内容解析出来。

文件内容解析(excel文件)放入对象

List<WGxZdywCrm> wGxZdywCrmList = new ArrayList<>();
		SimpleDateFormat dateFormatUtil=new SimpleDateFormat("yyyy-MM-dd hh-mm-ss");
		Sheet sheet = wookbook.getSheetAt(0);//统计excel的行数
		int rowLen = sheet.getPhysicalNumberOfRows();//excel总行数,记录数=行数-1
		for (int i = 1; i < rowLen; i++) {
			WGxZdywCrm wGxZdywCrm = new WGxZdywCrm();
			Row row = sheet.getRow(i);
			int startCol = 0;
			if (row != null) {
				String fZdywSort = getValue(row.getCell(startCol++));//getValue下面贴出来了
				String fZdywCrmno = getValue(row.getCell(startCol++));
				String fZdywBusinesscode = getValue(row.getCell(startCol++));
				String fZdywContractno = getValue(row.getCell(startCol++));
				String fZdywCustomercount = getValue(row.getCell(startCol++));
				String fZdywPhonecount = getValue(row.getCell(startCol++));
				String fZdywAccepttime = getValue(row.getCell(startCol++));
				String fZdywFinishtime = getValue(row.getCell(startCol++));
				String fZdywNote = getValue(row.getCell(startCol++));
				wGxZdywCrm.setFZdywSort(Long.valueOf(fZdywSort));
				wGxZdywCrm.setFZdywCrmno(fZdywCrmno);
				wGxZdywCrm.setFZdywBusinesscode(fZdywBusinesscode);
				wGxZdywCrm.setFZdywContractno(fZdywContractno);
				wGxZdywCrm.setFZdywCustomercount(fZdywCustomercount);
				wGxZdywCrm.setFZdywPhonecount(fZdywPhonecount);
				wGxZdywCrm.setFZdywAccepttime(dateFormatUtil.parse(fZdywAccepttime));
				wGxZdywCrm.setFZdywFinishtime(dateFormatUtil.parse(fZdywFinishtime));
				wGxZdywCrm.setFZdywNote(fZdywNote);
				wGxZdywCrmList.add(wGxZdywCrm);
			}
		}
		return wGxZdywCrmList;

获取内容

private String getValue(Cell cell) {
		if (cell == null)
			return "";
		if (cell.getCellType() == Cell.CELL_TYPE_BOOLEAN) {
			return String.valueOf(cell.getBooleanCellValue()).trim();
		} else if (cell.getCellType() == Cell.CELL_TYPE_NUMERIC) {
			DecimalFormat df = new DecimalFormat("#");
			return String.valueOf(df.format(cell.getNumericCellValue())).trim();
		} else {
			cell.setCellType(cell.CELL_TYPE_STRING);
			return String.valueOf(cell.getStringCellValue()).trim();
		}
	}
  • 1
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
在使用 jQuery 实现多文件上传时,可以通过 FormData 对象来将多个文件一起传递给后端。以下是一个示例代码: HTML代码: ```html <form id="myForm"> <input type="file" id="myFile" name="files[]" multiple> <button type="submit">上传文件</button> </form> ``` JavaScript 代码: ```javascript $(document).ready(function() { $("#myForm").submit(function(event) { // 阻止表单的默认提交行为 event.preventDefault(); // 创建 FormData 对象 var formData = new FormData(); // 获取文件域中选择的所有文件 var files = $("#myFile")[0].files; // 遍历文件列表,将每个文件都加入到 FormData 对象中 for (var i = 0; i < files.length; i++) { formData.append('files[]', files[i]); } // 发送 AJAX 请求,将 FormData 对象提交给后端 $.ajax({ url: 'your-backend-url', type: 'POST', data: formData, cache: false, contentType: false, processData: false, success: function(response) { // 处理后端返回的响应数据 }, error: function(error) { // 处理 AJAX 请求失败的情况 } }); }); }); ``` 在上述代码中,首先通过 `FormData` 对象创建一个空的表单数据对象,然后通过 `$("#myFile")[0].files` 获取文件域中选择的所有文件,并将它们逐个添加到表单数据对象中。最后,使用 jQuery 的 `$.ajax()` 方法将表单数据对象提交给后端,并在 `success` 回调函数中处理后端返回的响应数据。需要注意的是,为了正确处理二进制数据,需要将 `cache`、`contentType` 和 `processData` 都设置为 `false`。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值