【问题标题】:SailsJS User upload imagesSailsJS 用户上传图片
【发布时间】:2014-02-21 11:22:16
【问题描述】:

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

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

有人有解决方案吗? 谢谢

【问题讨论】:

    标签: image upload sails.js assets


    【解决方案1】:

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

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

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

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

    【讨论】:

    • 感谢您的回答,我会努力的!对于 Amazon S3,我进行了一些搜索。你知道在开发过程中提供免费包且生产成本适中的 CDN 服务吗?
    • @user1853777 真的不能推荐任何具体的东西。 MaxCDN 在价格/质量方面最适合我。同时,基本的谷歌搜索出现了这个:cloudinary.com/pricing,它说他们甚至有一个免费的包。但我想你最好自己做一些研究。 ;)
    【解决方案2】:

    上传图片

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

    【讨论】:

      【解决方案3】:

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

      【讨论】:

        猜你喜欢
        • 2017-02-07
        • 2019-11-28
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-03-19
        相关资源
        最近更新 更多