6

次のコードを使用しています

https://github.com/cthackers/adm-zip/wiki/ADM-ZIP-はじめに

必要なのは、リクエストからzipファイルを取得することです(エクスプレスを使用していて、リクエストとレスポンスを使用しています)。それをいくつかのパス(ローカルドライブの例では)に抽出(解凍)する必要があります。 req と、それを機能させるためにここに欠けているもの

  fn: function (req, res) {
       var admZip = require('adm-zip');

        var zip = new admZip();

        zip.addLocalFile("C://TestFolder//TestZip");

リクエスト本文でzipファイルを取得します(郵便配達員を使用し、本文でバイナリを使用してzipファイルを選択します)

4

2 に答える 2

0

私のスニペットコードを試してください:

いくつかの情報については、以下のようなマイアプリの構造:

my path --> C:\xampp\htdocs\service

service
    |
    -- tmp\
    |
    -- app.js
    |
    -- index.html

クライアント側:

<html>
<body>
<h3>ZIP Upload:</h3>
<form action="/upload_zip" method="POST" enctype="multipart/form-data">
    Select zip to upload:
    <input type="file" name="zipFile" id="zipFile">
    <input type="submit" value="Upload ZIP" name="submit">
</form>
</body>
</html>

サーバ側:

enctype="multipart/form-data"郵便配達員などを使用して投稿するときは、使用することを忘れないでください...

var express = require("express");
var fs = require("fs");
var AdmZip = require('adm-zip');
var app = express();

var multer = require("multer");
var multer_dest = multer({dest: "./tmp"}).single('zipFile');

app.get("/",function(req,res){
    console.log("Show index.html");
    res.sendFile(__dirname+"/"+"index.html");
});

app.post("/upload_zip",multer_dest,function(req,res){
    console.log(req.file);  
    var zip = new AdmZip(req.file.path); 
    zip.extractAllTo("./tmp");
    result = {
        file:req.file,
        message:"File has been extracted"
    };
    fs.unlink(req.file.path, function (e) {
        if (e) throw e;
        console.log('successfully deleted '+req.file.path);
    });
    res.end(JSON.stringify(result));
});

var server = app.listen(8081,function(){
    var host = server.address().address;
    var port = server.address().port;

    console.log("Example App Listening at http://%s:%s",host,port);
})

出力:

ここに画像の説明を入力

于 2015-12-06T06:05:22.567 に答える
0

multerform-dataの代わりにbinary使用することで、問題を単純化できます。アクセスして入力ファイルを取得した後、解凍操作を実行できます。req.file

たとえば、ルートに次を追加します。

var upload = require('multer')({ dest: 'uploads/' });
var admZip = require('adm-zip');


app.post('/upload-here', upload.single('file'), function (req, res, next) {
    var zip = new admZip(req.file.path);

    zip.extractAllTo("C://TestFolder//TestZip", true);
});
于 2015-11-30T07:13:12.233 に答える