Page 222 - AngularJS权威教程
P. 222

202  第 18 章  服务器通信


                     return d.promise;
                 },
                 // ...

                 S3 bucket的句柄让我们得以创建一个可供上传的文件。AWS在上传到S3的时候需要三个参数。
                  Key:文件对象的键。
                  Body:文件自身的blob。
                  ContentType:文件类型。
                 所幸,当我们从浏览器获取文件对象的时候,它上面的信息都是可用的。

                  // ...
                  // 处理上传
                  AWSService.s3({
                      params: {
                          Bucket: service.Bucket
                      }
                  }).then(function(s3) {
                     // 我们在S3对象中
                     // 有s3 bucket句柄
                     var file = items[0]; // 获取第一个文件
                     var params = {
                         Key: file.name,
                         Body: file,
                         ContentType: file.type
                     }

                     s3.putObject(params, function(err, data) {
                         // 文件已经上传
                         // 或者上传过程中出错
                     });
                 });
                 // ...

                 S3在上传文件时默认处于受保护状态。它什么都不用做,就可以防止我们把文件上传并且开
             放给公众。这个特性保证了我们上传到S3的所有东西都是受保护的,迫使我们在决定哪些文件要
             公开或者不要公开的问题上作出理智的选择。

                 记住这一点后,我们来创建一个临时地址,它会在一个给定时间之后失效。在ngroad市场中,
             这个URL会在供出售的每个东西上提供一个失效时间。
                 在任何情况下,要创建一个临时URL,我们都先要获取一个signedURL,并且把它存储在Users
             Item关联表中:

                  // ...
                  s3.putObject(params, function(err, data) {
                      if (!err) {
                          var params = {
                              Bucket: service.Bucket,
                              Key: file.name,
                              Expires: 900*4 // 1 hour
                          };
                          s3.getSignedUrl('getObject', params,
                             function(err, url) {
                                 // 现在有了url
                             });
                         }
   217   218   219   220   221   222   223   224   225   226   227