Как сервер nodejs принимает файл с лицевой стороны? [Дубликат]

Исправляя ответ выше, вы можете получить синтаксис с 1 строкой, как вы можете, для псевдонимов, что более удобно для ad-hoc-определений в файлах оболочки или .bashrc:

bash$ myfunction() { mv "$1" "$1.bak"; cp "$2" "$1"; }

bash$ myfunction original.conf my.conf

Забудьте о полуколонии перед закрывающей правой скобкой. Аналогично, для актуального вопроса:

csh% alias junk="mv \\!* ~/.Trash"

bash$ junk() { mv "$@" ~/.Trash/; }

Или:

bash$ junk() { for item in "$@" ; do echo "Trashing: $item" ; mv "$item" ~/.Trash/; done; }
3
задан hh54188 25 December 2012 в 07:44
поделиться

2 ответа

Вы должны посмотреть документацию multipart middleware , это тот, который связан с загрузкой файла.

В нем говорится, что предел устанавливается с помощью опции «limit» и этот прогресс можно было бы прослушать, если вы поместили опцию «отложить» на значение true. В этом случае форма, используемая загрузкой, устанавливается как атрибут вашего запроса. Затем вы сможете прослушивать событие progress .

Таким образом, ваш код должен выглядеть так (еще не проверен):

app.configure(function () {
    app.use(express.static(__dirname + "/media"));
    app.use(express.bodyParser({
          keepExtensions: true,
          limit: 10000000, // 10M limit
          defer: true              
    }));
})

app.post('/upload', function (req, res) {
    req.form.on('progress', function(bytesReceived, bytesExpected) {
        console.log(((bytesReceived / bytesExpected)*100) + "% uploaded");
    });
    req.form.on('end', function() {
        console.log(req.files);
        res.send("well done");
    });
})
8
ответ дан Frank 20 August 2018 в 23:03
поделиться
  • 1
    спасибо youuuuuuuuuuuuuuuuuuuuuu! – Alexis 22 July 2013 в 06:22
  • 2
    Полный код или ссылка Github были бы замечательными. – Shikhar 18 November 2014 в 14:36
  • 3
    Любые подсказки о том, как отправить прогресс клиенту? Нужно ли мне сохранять процент и делать ручные запросы GET от клиента, чтобы запросить процент? – Flion 2 May 2018 в 16:40

У меня есть функция в моем проекте, которая загружает файлы, может немного помочь вам:

var app = express.createServer(
    express.bodyParser({uploadDir: "public/files", keepExtensions: true})
  , express.cookieParser()
  , express.session({ secret: 'keyboard cat' })
);

app.post('/upload', function (req, res) {
var msg = '';
var img = '';

//console.log("type: "+req.files.image.type);
//console.log("size: "+req.files.image.size);

if(req.files.image.type != 'image/png' && req.files.image.type != 'image/jpeg' && req.files.image.type != 'image/gif')
{
    msg = 'Invalid format, accepts only: jpg, png and gif.<br/>';
}

if(req.files.image.size > 307200) // 300 * 1024
{
    msg += 'File size no accepted. Máx: 300kb.<br/>';
}

if(msg == '')
{
    if(diff > 0)
    {
        name = name.substring(name.length-diff, name.length);
    }

    var date = new Date();
    var name = req.files.image.name;
    var diff = name.length - 20;
    var rnd_number = Math.floor(Math.random()*101);
    var new_name = date.format('yyyymmdd_HHMMssl_') + rnd_number +'_'+ name;

    fs.renameSync(req.files.image.path, 'public/files/img'+new_name);

    img = '<img src="public/files/img/'+new_name+'" width="100%"/>';
}

res.render('admin/upload', {layout: false, img: img, msg: msg});

})
1
ответ дан alditis 20 August 2018 в 23:03
поделиться
Другие вопросы по тегам:

Похожие вопросы: