2013-05-01 132 views
0

我無法下載文件來響應ajax發佈請求。通過ajax快速下載文件

$(function(){ 
    $('img.download').click(function() { 
    var image_path = $(this).attr('class').split(" ")[1] 
    $.ajax({url:'/download',type:'POST',data:{image_path:image_path}}) 
    })  
}) 

Node.js的代碼

app.post('/download',function(req,res){ 
    //var image_path = req.body.image_path 
    //var filename = 'new.png' 
    res.set({ 
    'Content-Type': 'application/octet-stream', 
    'Content-Disposition': 'attachment;filename=\"new.png\"' 
    }) 
    //res.set('Content-type', 'image/png') 
    //var filestream = fs.createReadStream('public/uploads/new.png') 
    //filestream.pipe(res) 
    res.download('public/uploads/new.png') 
}) 
+0

我可以通過res.download()下載。它給你什麼錯誤? – user568109 2013-05-02 04:57:48

回答

1

看來好像你想要的圖片點擊觸發一個下載對話框。如果是這種情況,請不要使用Ajax。發送帖子並讓瀏覽器處理對話。作爲點擊結果發佈可以通過創建一個簡單的表單來完成。

$("img.download").click(function() { 
    var image_path = $(this).attr('class').split(" ")[1]; 
    var form = $('<form>', {action: '/download', method: 'POST'}); 
    form.append($('<input>', {name: 'image_path', value: image_path})); 
    form.submit(); 
}); 

(請注意,您的樣品中,內容處置res.set只是要在res.download被否決這就是基本上所有res.download做;它集內容處置,然後調用sendfile。)