我需要让我的用户上传图片。但我不知道在哪里可以创建我的“uploads”文件夹,以及如何在我的视图中访问它。
在SailsJS中,我们有一个文件夹资产/图像,但当我们举起风帆时(Grunt),其中的所有图像都将被复制到公共文件夹.tmp中。 所以我无法在资产/图像中创建.tmp中的文件夹。
有人有解决方案吗? 感谢
答案 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或其他类似的服务器。这将减少服务器上的负载。