使用MS edge下载文件名大于255个字符的文件

时间:2017-02-09 05:39:56

标签: java windows-10 microsoft-edge long-filenames

我使用spring框架来提供下载文件。我有以下代码。

public ResponseEntity<List<Integer>>
            defExport()
                    throws IllegalStateException,
                    IOException {
        Map<String, Object> resultMap = Maps.newHashMap();
        int status = STATUS_SUCCESS;
        HttpHeaders headers = new HttpHeaders();
        List<Integer> byteList = Lists.newArrayList();
        try {
            File file = transformService.executeExport(something);
            byte[] fileContent = null;
            try (InputStream is = new FileInputStream(file)) {
                fileContent = read(is);
            }
            String fileName = StringUtils.join(something, ".xlsx");
            headers.add("fileName", fileName);
            headers.add("Content-Disposition", StringUtils.join(
                    "attachment; filename=\"", URLEncoder.encode(fileName, "UTF8"), "\""));
            for (byte b : fileContent) {
                byteList.add(new Integer(b));
            }
        } catch (Exception e) {
            status = STATUS_ERROR;
        }
        headers.add("ifxResultStatus", String.valueOf(status));
        return new ResponseEntity<>(byteList, headers, HttpStatus.OK);
在JS方面,我有以下几点:

_self.xhr.open('POST', targetUrl, true);
        _self.xhr.onreadystatechange = goog.bind(this.blankDlResponseHandler, this);
        _self.xhr.setRequestHeader('X-CSRF-TOKEN', project.core.app.View.getCsrfToken());
        var form_data = new FormData();
        _self.xhr.send(form_data);

当我尝试下载名称超过255个字符的文件时,我可以在Chrome和IE11上成功完成Windows 10。

但是,当我尝试在MS Edge中执行此操作时,由于文件名较长,下载失败。 我怎样才能使它在MS Edge上运行。

修改

我刚才意识到在Chrome中,文件名总是限制为218个字符,最后一个字符会被修剪。

所以,我的新问题是如何将字符限制为218,特别是在已存在同名文件的情况下(文件名随后附加(1),(2)等)

0 个答案:

没有答案