HTTP 프로토콜의 Content-Disposition

2496 단어
전체 예제 코드 참조 Content-Disposition

Contents

  • Startup
  • Node
  • HTTP

  • Startup

    mkdir node-download && cd node-download
    
    npm init && cnpm i --save express
    
    vim app.js
    
    var express = require('express');
    var app = express();
    
    app.get('/', function (req, res) {
        res.send('Hello World!');
    });
    
    app.listen(3000, function () {
        console.log(' ');
    });
    
    node app.js
    
    curl localhost:3000
    

    Node

    vim app.js
    
    var fs = require('fs');
    var express = require('express');
    var app = express();
    
    app.get('/preview', function (req, res) {
        var filename = 'image.jpg';
        res.sendFile(filename, {
            root: __dirname
        });
    });
    
    app.get('/download', function (req, res) {
        var filename = 'image.jpg';
        res.download(filename);
    });
    
    app.get('/deleteAfterDownload', function (req, res) {
        var filename = 'temp.jpg';
        fs.writeFileSync(filename, fs.readFileSync('image.jpg'));
        var stream = fs.createReadStream(filename);
        stream.once("end", function () {
            stream.destroy();
            fs.unlinkSync(filename);
        }).pipe(res);
    });
    
    app.listen(3000, function () {
        console.log(' ');
    });
    
    node app.js
    
  • 브라우저 열기http://localhost:3000/preview
  • 브라우저 열기http://localhost:3000/download
  • 브라우저 열기http://localhost:3000/deleteAfterPreview

  • HTTP

    curl -I localhost:3000/download
    # Content-Disposition: attachment; filename="image.jpg"
    
    vim app.js
    
    app.get('/deleteAfterDownload', function (req, res) {
        var filename = 'temp.jpg';
        fs.writeFileSync(filename, fs.readFileSync('image.jpg'));
        var stream = fs.createReadStream(filename);
        res.set('Content-Disposition', 'attachment; filename="temp.jpg"');
        stream.once("end", function () {
            stream.destroy();
            fs.unlinkSync(filename);
        }).pipe(res);
    });
    
    ndoe app.js
    
  • 브라우저 열기http://localhost:3000/deleteAfterDownload

  • HTTP 프로토콜 Content-Disposition 응답 헤더: inline (기본값) 은 웹 페이지에 attachment를 표시하면 로컬로 다운로드됨을 나타냅니다.

    좋은 웹페이지 즐겨찾기