2013-05-01 2 views
0

아약스 게시물 요청에 대한 응답으로 파일을 다운로드 할 수 없습니다.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

답변

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.setres.download에서 재정의 될 것입니다 그것은 본질적으로 모든 res.download의 수행;. 그것은 내용 - 처리를 설정하고 sendfile를 호출합니다.)