Nodejs/Express 保存从 web 客户端选择头像并直接保存到 MySQL 数据库

Posted

技术标签:

【中文标题】Nodejs/Express 保存从 web 客户端选择头像并直接保存到 MySQL 数据库【英文标题】:Nodejs/Express Save select avatar from web client and save directly to MySQL Database 【发布时间】:2019-04-14 12:13:03 【问题描述】:

在这里寻找一些指导。我正在使用 mysql 数据库构建 Nodejs/Express 应用程序。我希望能够单击网页上的用户图像(初始图像是通用图像),选择不同的图像并将新图像上传/保存到 MySQL 数据库中。我使用:

$('#file-input').trigger('click').change (function()
        alert($('#file-input').val());
    )

我得到 C:/fakepath... 用于图像位置。我想如何将所选图像上传/保存到 MySQL 数据库。与数据库的连接已建立,常规数据的路由工作正常。

【问题讨论】:

“我希望能够点击网页上的用户图像(初始图像是通用图像),选择不同的图像并将新图像上传/保存到 MySQL 数据库中” i> - 你根本做不到,你不能代表用户访问本地文件系统,想想拥有这种功能的安全隐患 我了解所有安全隐患以及为什么路径显示为 C:/fakepath。我正在尝试做的是每个其他网站上的标准功能,即更改用户个人资料图片。我正在尝试实现这一点。 @AlonEitan 我想他想将文件从浏览器上传到服务器并将其位置保存在数据库中。 @goryef 我会推荐你​​从这里观看视频:youtube.com/… 祝你好运(: @goryef 我对 node.js 一无所知(我是一名 php 开发人员),但 this question 还不够好吗?如果您想将图像保存为数据库中的 BLOB 或只是路径,那么read this 【参考方案1】:

在回答您的问题之前,建议您不要将图像保存到 MySql 或任何数据库中,使用 IPFS、本地应用程序目录/文件夹或最佳 AWS s3 存储桶。

您可以使用busboy.js NPM 模块或multer.js NPM 模块将文件上传到服务器,有很多充分的理由不将任何类型的文件保存在本地数据库中。

现在回到如何将图像保存在数据库中。您可以通过首先将您的图像转换为您的 MySql 理解的数据格式来做到这一点。默认情况下,图像是二进制的,根据选择的图像,某些图像二进制太大,以至于 MySql text 数据类型对他们来说很小。将二进制转换为十六进制确实有帮助,但对于 MySql text 数据类型来说仍然太大。您还需要multipart/form-data 进行文件上传。

您可以轻松找到“如何在 nodeJs 中上传文件?”在谷歌搜索中。如果还需要一个例子,这里有一个“Upload file using multer.js”

【讨论】:

以上是关于Nodejs/Express 保存从 web 客户端选择头像并直接保存到 MySQL 数据库的主要内容,如果未能解决你的问题,请参考以下文章

Nodejs+Express 搭建 web应用

如何(重新)在 nodejs/express 中使用 redis 客户端连接?

nodejs express session用法(含保存到redis)

nodejs/express - 立即将标准输出流式传输到客户端

Nodejs/Express/Typescript 需要 module.exports

为啥我无法从任何网络连接到 NodeJS express 服务器?