node js获取图片网址

时间:2018-02-08 13:01:54

标签: node.js multer

我想 1 - 从我的文件系统中选择一个图像并将其上传到服务器/本地 2-使用节点js服务获取其URL。我设法做了第1步,现在我想获取图像网址,而不是在res.end中获取成功消息 这是我的代码

body {
  box-sizing: border-box;
  background-color: #f0f0f0;
}

.wrapper {
  max-height: none;
  height: auto;
  width: 550px;
  box-shadow: 1px 13px 39px -5px #e2e2e2;
  display: flex;
  flex-direction: row;
}

.wrapper__image-container {
  flex: 0 0 auto;
}

.wrapper__image {
  width: 100%;
  height: auto;
  display: block;
}

.wrapper__item {
  background-color: lightcoral;
  display: flex;
  flex-direction: column;
  height: 100%;
  width: 100%;
  margin-right: 30px;
}

.wrapper__content {
  padding: 18px;
  flex: 1 1 auto;
  height: 100%;
}

.wrapper__content--without-height {
  padding: 18px;
  flex: 1 1 auto;
}

.wrapper__title {
  margin-bottom: 27px;
  max-height: 80px;
  width: 100%;
}

.wrapper__text {
  margin-bottom: 20px;
  max-height: 75px;
}

.wrapper__title,
.wrapper__text {
  overflow: hidden;
  flex: 0 0 auto;
}

.wrapper__date {
  flex: 0 1 auto;
}

我使用multer上传图片。

2 个答案:

答案 0 :(得分:3)

您可以使用AWS S3执行此类操作,并返回上传图片的网址

const AWS = require('aws-sdk')

AWS.config.update({
  accessKeyId: <AWS_ACCESS_KEY>,
  secretAccessKey: <AWS_SECRET>
})

const uploadImage = file => {
  const replaceFile = file.data_uri.replace(/^data:image\/\w+;base64,/, '')
  const buf = new Buffer(replaceFile, 'base64')

  const s3 = new AWS.S3()
  s3.upload({
    Bucket: <YOUR_BUCKET>,
    Key: <NAME_TO_SAVE>,
    Body: buf,
    ACL: 'public-read'
  }, (err, data) => {
    if (err) throw err;

    return data.Location; // this is the URL
  })
}

你也可以查看这个快速生成器,它有将图像上传到AWS S3 https://www.npmjs.com/package/speedbe的路径

答案 1 :(得分:0)

我假设您要将图像保存在服务器文件系统上,而不是像AWS S3或Google Cloud Storage这样的存储解决方案,您可以在上传后获取网址。

由于您将它存储在文件系统中,因此您可以使用唯一标识符(如uuid或其他名称)重命名该文件。

然后你可以创建一个GET路由并在查询或路径参数中请求该ID,然后读取具有该ID作为名称的文件并将其发回。