Inhaltsverzeichnis
页面样式
服务端保存
Heim Web-Frontend HTML-Tutorial NodeJS-图片上传(Express)_html/css_WEB-ITnose

NodeJS-图片上传(Express)_html/css_WEB-ITnose

Jun 21, 2016 am 08:59 AM

文件上传是每个网站不可避免的,最近需要做些上传图片的功能,主要解决两个问题,一个是文件上传样式和服务端路径保存,功能很简单,做起来倒是没那么简单,先从最简单的页面的上传页面的样式开始。

页面样式

Html页面默认的上传的是比较难看的,需要重做一个背景图片,通过背景图片添加上传的图片:

上传图片样式:

<div class="upload-container">                                <input type="file" name="fileToUpload" id="fileToUpload" class="fileupload" />                            </div>
Nach dem Login kopieren

CSS样式:

.upload-container {            background-image: url(../../images/rv/add.jpg);            background-repeat: no-repeat;            width: 180px;            height: 200px;            padding-bottom: 10px;            display: inline-block;            vertical-align: middle;            .fileupload {                opacity: 0;                filter: alpha(opacity=0);                width: 200px;                height: 200px;            }        }
Nach dem Login kopieren

Html点击上传有两种比较常用的方式iFrame上传和Ajax上传,本文采用了Ajax上传是 HTML5提出了XMLHttpRequest对象的第二版,传递文件数据主要是通过FormData实现:

$('.fileupload').change(function(event) {        /* Act on the event */        if ($('.fileupload').val().length) {            var fileName = $('.fileupload').val();            var extension = fileName.substring(fileName.lastIndexOf('.'), fileName.length).toLowerCase();            if (extension == ".jpg" || extension == ".png") {                    var data = new FormData();                    data.append('upload', $('#fileToUpload')[0].files[0]);                    $.ajax({                        url: 'apply/upload',                        type: 'POST',                        data: data,                        cache: false,                        contentType: false, //不可缺参数                        processData: false, //不可缺参数                        success: function(data) {                            console.log(data);                        },                        error: function() {                            console.log('error');                        }                    });            }         }    });
Nach dem Login kopieren

服务端保存

NodeJS服务端保存需要使用了第三方插件

node-formidable ,npm安装地址:

npm install formidable@latest
Nach dem Login kopieren

上传图片

var cacheFolder = 'public/images/uploadcache/';exports.upload = function(req, res) {    var currentUser = req.session.user;    var userDirPath =cacheFolder+ currentUser.id;    if (!fs.existsSync(userDirPath)) {        fs.mkdirSync(userDirPath);    }    var form = new formidable.IncomingForm(); //创建上传表单    form.encoding = 'utf-8'; //设置编辑    form.uploadDir = userDirPath; //设置上传目录    form.keepExtensions = true; //保留后缀    form.maxFieldsSize = 2 * 1024 * 1024; //文件大小    form.type = true;    var displayUrl;    form.parse(req, function(err, fields, files) {        if (err) {            res.send(err);            return;        }        var extName = ''; //后缀名        switch (files.upload.type) {            case 'image/pjpeg':                extName = 'jpg';                break;            case 'image/jpeg':                extName = 'jpg';                break;            case 'image/png':                extName = 'png';                break;            case 'image/x-png':                extName = 'png';                break;        }        if (extName.length === 0) {            res.send({                code: 202,                msg: '只支持png和jpg格式图片'            });            return;        } else {            var avatarName = '/' + Date.now() + '.' + extName;            var newPath = form.uploadDir + avatarName;            displayUrl = UPLOAD_FOLDER + currentUser.id + avatarName;            fs.renameSync(files.upload.path, newPath); //重命名            res.send({                code: 200,                msg: displayUrl            });        }    });};
Nach dem Login kopieren

不同用户上传置放在不同的位置,根据需求来设置,当然也有可以每张图片都给不同的id编号,推荐第三方uuid插件: https://github.com/broofa/node-uuid

文件重命名:

fs.renameSync(files.upload.path, newPath); //重命名
Nach dem Login kopieren

文件上传进度:

form.on('progress', function(bytesReceived, bytesExpected) {});
Nach dem Login kopieren

node-formidable 有很多官方API还有很多设置的选项,本文根据需求设置了几项,有额外需求的可以参考官方地址~

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Was ist der Zweck des & lt; Fortschritts & gt; Element? Was ist der Zweck des & lt; Fortschritts & gt; Element? Mar 21, 2025 pm 12:34 PM

Der Artikel erörtert den HTML & lt; Progress & gt; Element, Absicht, Styling und Unterschiede vom & lt; Meter & gt; Element. Das Hauptaugenmerk liegt auf der Verwendung & lt; Fortschritt & gt; Für Aufgabenabschluss und & lt; Meter & gt; für stati

Ist HTML für Anfänger leicht zu lernen? Ist HTML für Anfänger leicht zu lernen? Apr 07, 2025 am 12:11 AM

HTML ist für Anfänger geeignet, da es einfach und leicht zu lernen ist und schnell Ergebnisse sehen kann. 1) Die Lernkurve von HTML ist glatt und leicht zu beginnen. 2) Beherrschen Sie einfach die grundlegenden Tags, um Webseiten zu erstellen. 3) hohe Flexibilität und kann in Kombination mit CSS und JavaScript verwendet werden. 4) Reiche Lernressourcen und moderne Tools unterstützen den Lernprozess.

Was ist der Zweck des & lt; datalist & gt; Element? Was ist der Zweck des & lt; datalist & gt; Element? Mar 21, 2025 pm 12:33 PM

Der Artikel erörtert den HTML & lt; Datalist & gt; Element, das die Formulare verbessert, indem automatische Vorschläge bereitgestellt, die Benutzererfahrung verbessert und Fehler reduziert werden.Character Count: 159

Was ist der Zweck des & lt; Meter & gt; Element? Was ist der Zweck des & lt; Meter & gt; Element? Mar 21, 2025 pm 12:35 PM

Der Artikel erörtert das HTML & lt; Meter & gt; Element, verwendet zur Anzeige von Skalar- oder Bruchwerten innerhalb eines Bereichs und seine gemeinsamen Anwendungen in der Webentwicklung. Es differenziert & lt; Meter & gt; von & lt; Fortschritt & gt; und Ex

Was ist das Ansichtsfenster -Meta -Tag? Warum ist es wichtig für reaktionsschnelles Design? Was ist das Ansichtsfenster -Meta -Tag? Warum ist es wichtig für reaktionsschnelles Design? Mar 20, 2025 pm 05:56 PM

In dem Artikel wird das Ansichtsfenster -Meta -Tag erörtert, das für das reaktionsschnelle Webdesign auf mobilen Geräten unerlässlich ist. Es wird erläutert, wie die ordnungsgemäße Verwendung eine optimale Skalierung von Inhalten und Benutzerinteraktion gewährleistet, während Missbrauch zu Design- und Zugänglichkeitsproblemen führen kann.

Was ist der Zweck des & lt; iframe & gt; Etikett? Was sind die Sicherheitsüberlegungen bei der Verwendung? Was ist der Zweck des & lt; iframe & gt; Etikett? Was sind die Sicherheitsüberlegungen bei der Verwendung? Mar 20, 2025 pm 06:05 PM

Der Artikel erörtert das & lt; iframe & gt; Der Zweck von Tag, externe Inhalte in Webseiten, seine gemeinsamen Verwendungen, Sicherheitsrisiken und Alternativen wie Objekt -Tags und APIs einzubetten.

Die Rollen von HTML, CSS und JavaScript: Kernverantwortung Die Rollen von HTML, CSS und JavaScript: Kernverantwortung Apr 08, 2025 pm 07:05 PM

HTML definiert die Webstruktur, CSS ist für Stil und Layout verantwortlich, und JavaScript ergibt eine dynamische Interaktion. Die drei erfüllen ihre Aufgaben in der Webentwicklung und erstellen gemeinsam eine farbenfrohe Website.

HTML, CSS und JavaScript verstehen: Ein Anfängerhandbuch HTML, CSS und JavaScript verstehen: Ein Anfängerhandbuch Apr 12, 2025 am 12:02 AM

WebdevelopmentRelieSonHtml, CSS und JavaScript: 1) HtmlStructuresContent, 2) CSSstylesit und 3) JavaScriptaddssinteraktivität, Bildung von TheBasisofModerernwebexperiences.

See all articles