2016-12-02 15 views
11

मैंने फ़ाइल को AJAX की प्रतिक्रिया के रूप में डाउनलोड किया। सामग्री-स्वभाव से फ़ाइल नाम और फ़ाइल प्रकार कैसे प्राप्त करें और इसके लिए थंबनेल प्रदर्शित करें। मुझे कई खोज परिणाम मिल गए लेकिन सही तरीके से नहीं मिला।सामग्री-स्वभाव से फ़ाइल नाम कैसे प्राप्त करें

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

        } 
       }); 

कंसोल आउटपुट: inline; filename=demo3.png

+0

कंसोल क्या कहता है? – Matthew

+0

आप 'window.location.href =" http: // localhost: 8080/prj/"+ data +"/"+ uiid +"/getfile "क्यों सेट कर रहे हैं;'? इससे ब्राउजर पेज को छोड़ देगा और बस उस यूआरएल को दिखाएगा। यदि आपने पृष्ठ छोड़ा है तो आप छवि के लिए थंबनेल प्रदर्शित करने की अपेक्षा कैसे करते हैं? आपको फ़ाइल नाम की आवश्यकता क्यों है जो सर्वर आपको थंबनेल जेनरेट करने के लिए फ़ाइल को सहेजने का सुझाव देता है? – Quentin

+1

सामग्री-स्वभाव से फ़ाइल नाम प्राप्त करना एक समस्या है। आप फ़ाइल प्रकार को उस से प्राप्त नहीं कर सकते हैं, कम से कम भरोसेमंद नहीं, सामग्री-प्रकार शीर्षलेख के लिए यही है। थंबनेल प्रदर्शन डेटा से आएगा और एक पूरी तरह से अलग समस्या है। – Quentin

उत्तर

23

यहाँ कैसे मैं इसे कुछ समय पहले किया जाता है। मुझे लगता है कि आप एक सर्वर प्रतिक्रिया के रूप में अनुलग्नक प्रदान कर रहे हैं। शब्द inline के अपने सवाल उपयोग सूट करने के लिए जवाब का संपादन 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 के बजाय:

मैं अपने बाकी सेवा 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, ''); 
     } 
    } 
} 

संपादित से इस तरह प्रतिक्रिया हेडर सेट

+0

आपका regexp filenameXXX = ...... या inlineXXXX = के साथ मेल खाता है .... – Rouliboy

संबंधित मुद्दे