2014-02-21 36 views
2

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

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

有人有解决方案吗? 感谢

回答

3

假设你是一个基于Linux的系统上,你可以在你项目的根目录中创建您的uploads文件夹,并从assets文件夹的符号链接是:

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

一旦帆从解除所有文件上传文件夹将通过http://your.host.com/uploads/filename.ext访问,包括在运行时上传的文件。

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

+0

感谢您的回答,我会努力的!对于Amazon S3我做了一些搜索。您是否知道在开发期间提供免费套餐的CDN服务以及生产的适中成本? – user1853777

+0

@ user1853777无法真正推荐任何特定的东西。 MaxCDN在价格/质量方面对我来说效果最好。与此同时,Google的基本搜索提出了这个问题:http://cloudinary.com/pricing,它表示他们甚至有一个免费套餐。但我想你自己做一些研究会更好。 ;) – bredikhin

0

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

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") 
    } 
    }) 
});