【问题标题】:Nodejs/Express Save select avatar from web client and save directly to MySQL DatabaseNodejs/Express 保存从 web 客户端选择头像并直接保存到 MySQL 数据库
【发布时间】: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

标签: mysql node.js ajax express avatar


【解决方案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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-28
    • 1970-01-01
    • 2021-08-22
    • 2012-09-05
    相关资源
    最近更新 更多