2016-12-02 23 views
11

Tôi đã tải xuống tệp dưới dạng phản hồi của ajax. Cách lấy tên tệp và loại tệp từ bố cục nội dung và hình thu nhỏ hiển thị cho tệp đó. tôi nhận được nhiều kết quả tìm kiếm nhưng không thể tìm được đúng cách.Cách lấy tên tệp từ bố cục nội dung

$(".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); 

        } 
       }); 

console đầu ra: inline; filename=demo3.png

+0

Bảng điều khiển nói gì? – Matthew

+0

Tại sao bạn đặt 'window.location.href =" http: // localhost: 8080/prj/"+ dữ liệu +"/"+ uiid +"/getfile ";'? Điều đó sẽ khiến trình duyệt rời khỏi trang và chỉ hiển thị URL đó. Làm thế nào để bạn mong đợi để hiển thị một hình thu nhỏ cho hình ảnh nếu bạn đã rời khỏi trang? Tại sao bạn cần tên tệp mà máy chủ đề xuất bạn lưu tệp để tạo hình thu nhỏ? – Quentin

+1

Lấy tên tệp từ bố cục nội dung là một vấn đề. Bạn không thể nhận được loại tệp từ nó, ít nhất là không đáng tin cậy, đó là tiêu đề kiểu nội dung dành cho. Màn hình thu nhỏ sẽ xuất phát từ dữ liệu và là một vấn đề hoàn toàn riêng biệt. – Quentin

Trả lời

23

Sau đây là cách tôi đã sử dụng nó đôi khi trở lại. Tôi giả sử bạn đang cung cấp tệp đính kèm làm phản hồi của máy chủ.

tôi đặt tiêu đề phản ứng như thế này từ dịch vụ REST của tôi response.setHeader("Content-Disposition", "attachment;filename=XYZ.csv");

function(response, status, xhr){ 
    var filename = ""; 
    var disposition = xhr.getResponseHeader('Content-Disposition'); 
    if (disposition && disposition.indexOf('attachment') !== -1) { 
     var filenameRegex = /filename[^;=\n]*=((['"]).*?\2|[^;\n]*)/; 
     var matches = filenameRegex.exec(disposition); 
     if (matches != null && matches[1]) { 
      filename = matches[1].replace(/['"]/g, ''); 
     } 
    } 
} 

EDIT: Việc chỉnh sửa câu trả lời cho phù hợp với sử dụng question- bạn của từ inline thay vì attachment

function(response, status, xhr){ 
    var filename = ""; 
    var disposition = xhr.getResponseHeader('Content-Disposition'); 
    if (disposition && disposition.indexOf('inline') !== -1) { 
     var filenameRegex = /filename[^;=\n]*=((['"]).*?\2|[^;\n]*)/; 
     var matches = filenameRegex.exec(disposition); 
     if (matches != null && matches[1]) { 
      filename = matches[1].replace(/['"]/g, ''); 
     } 
    } 
} 

More here

+0

Regexp của bạn sẽ khớp với tên tệpXXX = ...... hoặc nội tuyếnXXXX = .... – Rouliboy

Các vấn đề liên quan