【发布时间】:2016-05-09 05:30:10
【问题描述】:
我正在构建一个网站,用户需要在其中填写包含名字、姓氏、头像、号码等信息的表单...我已经编写了表单代码,我正在寻找使用 node js 的方法将图像上传到特定目录(或默认目录)并将用户填写的信息存储在我的数据库中。我使用 node js 和 Express 和 mysql。
更新:
(我使用了强大的包和实用程序包)。 请注意,对于图像部分,我只需要路径(您将在输出部分看到它)。
表格代码:
<form method="post" action="upload" enctype="multipart/form-data">
<fieldset>
<input type="file" accept="image/*" name="image" required /><br/>
<label for="Prenom">Prénom: </label>
<input type="text" name="user_prenom" id="Prenom" required /><br/>
<label for="Nom">Nom: </label>
<input type="text" name="user_nom" id="Nom" required /><br/>
<label for="Mail">E-Mail: </label>
<input type="email" name="user_mail" id="Mail" required/><br/>
<label for="Pays">Pays: </label>
<input type="text" name="user_pays" id="Pays" required/><br/>
<label for="Ville">Ville: </label>
<input type="text" name="user_ville" id="Ville" required/><br/>
<label for="Num">Numéro: </label>
<input type="tel" name="user_telephone" id="Num" /><br/>
<input type="submit" />
</fieldset>
</form>
句柄:
router.post('/upload', function(req, res) {
processFormFieldsIndividual(req, res);
});
function processFormFieldsIndividual(req, res) {
//Store the data from the fields in your data store.
//The data store could be a file or database or any other store based
//on your application.
var fields = [];
var form = new formidable.IncomingForm();
form.uploadDir = "/public/photo_utilisateurs";
//Call back when each field in the form is parsed.
form.on('field', function (field, value) {
fields[field] = value;
});
//Call back when each file in the form is parsed.
form.on('file', function (name, file) {
fields[name] = file;
//Storing the files meta in fields array.
//Depending on the application you can process it accordingly.
});
//Call back for file upload progress.
form.on('progress', function (bytesReceived, bytesExpected) {
var progress = {
type: 'progress',
bytesReceived: bytesReceived,
bytesExpected: bytesExpected
};
//Logging the progress on console.
//Depending on your application you can either send the progress to client
//for some visual feedback or perform some other operation.
});
//Call back at the end of the form.
form.on('end', function () {
res.writeHead(200, {
'content-type': 'text/plain'
});
res.write('received the data:\n\n');
res.end(util.inspect({
fields: fields
}));
});
// var user = JSON.parse(fields);
// connection.query('INSERT INTO Utilisateurs (user_nom, user_prenom, user_mail, user_phone, user_pays, user_ville) VALUES ("' + user.user_nom + '", "' + user.user_prenom + '", "' + user.user_mail + '", "' + user.user_pays + '", "' + user.user_ville + '", "' + user.user_telephone + '")',
// function selectCb(err, results, fields) {
// if (err) throw err;
// else res.send('success');
// });
form.parse(req);
}
输出
收到数据:
{ fields:
[ user_prenom: 'dfw',
user_nom: 'efwe',
user_mail: 'efew@fref',
user_pays: 'efwe',
user_ville: 'efwe',
user_telephone: '4380564324',
image: File {
domain: null,
_events: {},
_eventsCount: 0,
_maxListeners: undefined,
size: 518,
path: '/tmp/upload_e611ea0745206682b26c208d816dc604',
name: '1462507431_play_now_sign_youtube_video.svg',
type: 'image/svg+xml',
hash: null,
lastModifiedDate: Mon May 09 2016 00:16:24 GMT-0400 (EDT),
_writeStream: [Object] }
]
}
【问题讨论】:
-
你可以显示你的表单代码和表单处理
-
请给我5分钟
-
请注意,对于图像,我只需要路径
-
它似乎在你遇到问题的地方工作?如果你只想要使用
__dirname的路径,那么你的图像文件夹名称 -
是的,它工作我只是想知道如何获取每一个信息。正如您在输出部分看到的,它返回一个 json 对象
标签: javascript mysql node.js forms