根据form的ID值拼接请求URL

根据传入的form表单id值,按GET方式拼接请求URL,并对特殊值进行URl编码:

function getUrl(form_id){

 if(typeof(form_id)=='undefined' || form_id==null){
  alert("您好,你所传入的ID值不存在");
  return;
 }
 var form_obj = document.getElementById(form_id);
 if(form_obj==null || typeof(form_obj)=='undefined'){
  alert("您好,ID为" + form_id +"的对象不存在" );
  return;
 }
 if(form_obj.nodeName.toUpperCase()!="FORM"){
  alert("您好,你所传入ID所属对象不是FORM" );
  return;
 }

 var req_url = form_obj.action;
 if (req_url.trim() == "") {
  alert("form的action值不能为空!");
  return;
 }
 var _inputs = form_obj.getElementsByTagName("INPUT");
 var _selects = form_obj.getElementsByTagName("SELECT");
 if ((typeof(_inputs) != 'undefined' && _inputs.length != 0) ||
 (typeof(_selects) != 'undefined' && _selects.length != 0)) {
  req_url = req_url + "?";
 }
 
 if (typeof(_inputs) != 'undefined' && _inputs.length != 0) {
  for (var i = 0; i < _inputs.length; i++) {
   var _input = _inputs[i];
   var _type = _input.type.toUpperCase();
   if ( _type == "HIDDEN" || _type == "TEXT" || _type == "PASSWORD") {
    req_url = req_url + _input.name + "=" + encodeURIComponent(_input.value) + "&";
   }
  }
 }
 if (typeof(_selects) != 'undefined' && _selects.length != 0) {
  for (var i = 0; i < _selects.length; i++) {
   var _select = _selects[i];
   req_url = req_url + _select.name + "=" + _select.value + "&";
  }
 }
 req_url = req_url.substring(0, req_url.length - 1);
 return req_url;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,这是一个技术问题,我可以回答。以下是Java的RestTemplate实现Controller层的代码,已经标注了注释,并打印了入参日志: ```java @RestController public class DownloadController { @Autowired private RestTemplate restTemplate; @PostMapping("/download") public ResponseEntity<byte[]> downloadFile(@RequestParam("id") String id, @RequestParam("name") String name, @RequestParam("class") String clazz) { // 打印入参日志 System.out.println("id: " + id); System.out.println("name: " + name); System.out.println("class: " + clazz); // 构造请求参数 MultiValueMap<String, String> params = new LinkedMultiValueMap<>(); params.add("id", id); params.add("name", name); params.add("class", clazz); // 构造请求头 HttpHeaders headers = new HttpHeaders(); headers.setContentType(MediaType.APPLICATION_FORM_URLENCODED); // 构造请求实体 HttpEntity<MultiValueMap<String, String>> requestEntity = new HttpEntity<>(params, headers); // 发送POST请求 ResponseEntity<byte[]> responseEntity = restTemplate.exchange("http://example.com/download", HttpMethod.POST, requestEntity, byte[].class); // 获取文件名 String filename = getFilenameFromResponseHeaders(responseEntity.getHeaders()); // 构造响应头 HttpHeaders responseHeaders = new HttpHeaders(); responseHeaders.setContentType(MediaType.APPLICATION_OCTET_STREAM); responseHeaders.setContentDisposition(ContentDisposition.builder("attachment").filename(filename).build()); // 返回响应实体 return new ResponseEntity<>(responseEntity.getBody(), responseHeaders, HttpStatus.OK); } private String getFilenameFromResponseHeaders(HttpHeaders headers) { String contentDisposition = headers.getFirst(HttpHeaders.CONTENT_DISPOSITION); String[] parts = contentDisposition.split(";"); for (String part : parts) { part = part.trim(); if (part.startsWith("filename=")) { return part.substring("filename=".length()).replaceAll("\"", ""); } } return null; } } ```

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值