SailsJS用户上传图片

时间:2014-02-21 11:22:17

标签: image upload sails.js assets

我需要让我的用户上传图片。但我不知道在哪里可以创建我的“uploads”文件夹,以及如何在我的视图中访问它。

在SailsJS中,我们有一个文件夹资产/图像,但当我们举起风帆时(Grunt),其中的所有图像都将被复制到公共文件夹.tmp中。 所以我无法在资产/图像中创建.tmp中的文件夹。

有人有解决方案吗? 感谢

3 个答案:

答案 0 :(得分:3)

假设您使用的是基于Linux的系统,您可以在项目的根目录中创建uploads文件夹,并在assets文件夹中对其进行符号链接:

mkdir uploads && cd assets && ln -s ../uploads

一旦Sails被解除,上传文件夹中的所有文件都可以通过http://your.host.com/uploads/filename.ext访问,包括在运行时上传的文件。

也就是说,对于有大量上传的大型应用程序,将文件直接上传到Amazon S3或类似内容并通过CDN提供服务是有意义的。

答案 1 :(得分:1)

上传图片

There are two ways to upload images
  1. Upload images to Amazon s3 bucket.
  2. Upload Images mongodb gridFs.


I would like suggest to Uploading images to Aws (Amazon Web Services) S3 bucket why

 S3(Simple Storage Service)

Because S3 bucket is highly Scalable , relaible, fast and inexpensive simple data infrastructure to store.

示例AWS S3存储桶

Amazon provide a library/dependency for javascipt in NodeJs to access S3 bucket.

var AWS = require('aws-sdk');
var accessKeyId ="JHPSJFPDOKK4YLGMW25kLia";
var secretAccessKey ="kkl96vPMrc9rnDBSs5Yqq2cKMHlham5T2wfjBhj89H";
AWS.config.update({
    accessKeyId: accessKeyId,
    secretAccessKey: secretAccessKey
});

var s3 = new AWS.S3();

s3.createBucket({Bucket: 'myBucket'}, function() {
  var params = {Bucket: 'myBucket', Key: 'myKey', Body: 'Hello!'};
  s3.putObject(params, function(err, data) {
     if (err){
      console.log(err);  
     }else{
      console.log("Successfully uploaded data to myBucket/myKey")
     }
  })
});

答案 2 :(得分:0)

您可以使用skipper模块进行文件上传。在最新版本的Sails中,Skipper是默认的主体解析器,因此您可以直接使用它。如果您使用的是Amazon S3,则可以使用skipper-s3模块上传到s3。但最好的做法是直接上传文件,而不是通过AJAX请求到达任何CDN,如s3,cloudinary或其他类似的服务器。这将减少服务器上的负载。