How to get file name from content-disposition
我下载了文件作为ajax的响应。 如何从内容处置中获取文件名和文件类型并显示其缩略图。 我有许多搜索结果,但找不到正确的方法。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | $(".download_btn").click(function () { var uiid = $(this).data("id2"); $.ajax({ url:"http://localhost:8080/prj/" + data +"/" + uiid +"/getfile", type:"GET", error: function (jqXHR, textStatus, errorThrown) { console.log(textStatus, errorThrown); }, success: function (response, status, xhr) { var header = xhr.getResponseHeader('Content-Disposition'); console.log(header); } }); |
控制台输出:
这是我有时使用它的方式。
我假设您将附件作为服务器响应提供。
我从REST服务
1 2 3 4 5 6 7 8 9 10 11 12 13 | function(response, status, xhr){ var filename =""; var disposition = xhr.getResponseHeader('Content-Disposition'); if (disposition && disposition.indexOf('attachment') !== -1) { var filenameRegex = /filename[^;=\ ]*=((['"]).*?\\2|[^;\ ]*)/; var matches = filenameRegex.exec(disposition); if (matches != null && matches[1]) { filename = matches[1].replace(/['"]/g, ''); } } } |
编辑:
编辑答案以适合您的问题-使用单词
1 2 3 4 5 6 7 8 9 10 11 12 13 | function(response, status, xhr){ var filename =""; var disposition = xhr.getResponseHeader('Content-Disposition'); if (disposition && disposition.indexOf('inline') !== -1) { var filenameRegex = /filename[^;=\ ]*=((['"]).*?\\2|[^;\ ]*)/; var matches = filenameRegex.exec(disposition); if (matches != null && matches[1]) { filename = matches[1].replace(/['"]/g, ''); } } } |
这里更多
或者只是:
1 | var fileName = xhr.getResponseHeader('Content-Disposition').split("filename=")[1]; |
试试这个解决方案:
1 2 3 4 5 | var contentDisposition = xhr.getResponseHeader('Content-Disposition'); var startIndex = contentDisposition.indexOf("filename=") + 10; // Adjust '+ 10' if filename is not the right one. var endIndex = contentDisposition.length - 1; //Check if '- 1' is necessary var filename = contentDisposition.substring(startIndex, endIndex); console.log("filename:" + filename) |
有一个npm包可以完成这项工作:content-disposition
这是对marjon4答案的改进。
所选答案的一种简化方法是使用split这样的方法;
1 | var fileName = xhr.getResponseHeader('content-disposition').split('filename=')[1].split(';')[0]; |