2013-11-24 3 views
6

Я использую nodejs и expressjs framework для загрузки файла 'jsonFile.json' с сервера.res.download() не работает в моем случае

Я использую следующий код

res.get('/download', function(req, res) { 
     res.setHeader('Content-disposition', 'attachment; filename=jsonFile.json'); 
      res.setHeader('Content-Type', 'text/json'); 
      res.download(__dirname + 'jsonFile.json'); 
     } 
     }); 

Но это приводит в ответ с содержанием всего файла.

Я ожидал, что браузер попросит меня сохранить файл на локальном диске.

Как сохранить файл на локальном диске? ???

ответ

16

Пусть Экспресс установить правильные заголовки и просто сделать это:

res.get('/download', function(req, res) { 
    res.download(__dirname + 'jsonFile.json', 'jsonFile.json'); 
}); 

(doc)

EDIT: поскольку вы запрашиваете /download через вызов AJAX, вы должны изменить настройки потому что большинство (все?) браузеров в этом случае не будут показывать диалоговое окно загрузки.

Вместо этого, вы можете создать новое окно с вашего переднего конца кода, чтобы вызвать диалоговое окно:

window.open('/download?foo=bar&xxx=yyy'); 
+0

такой же статус .. :( – codeofnode

+0

также если я удаляю '/' в названии пути .. я получаю 404 – codeofnode

+0

да я удалил заголовки, и результат такой же, и все же я не получаю ожидаемого результата. попросите сохранить файл на диске, – codeofnode

0

Просто, чтобы подтвердить, что @robert сказал,

, потому что эта вещь повернул голову в течение двух дней , вместо того, чтобы использовать вызов Ajax, откройте новое окно с Ajax запроса местоположения, например:

window.open("http://yourserver.com/api/link?a=3&b=4") 

надеюсь, что это поможет кому-то.

Смежные вопросы