2017-08-05 116 views
2

我使用javascript,node.js和aws sdk。有很多關於通過簽名URL直接上傳現有文件到S3的例子,但是現在我正嘗試上傳字符串並在S3中創建一個文件,而沒有任何本地保存的文件。有什麼建議嗎?直接上傳字符串從瀏覽器到s3沒有本地文件

回答

1

沒有試過amazon-web-servicesamazon-s3aws-sdk,但如果你能上傳FileFormData對象,可一方或雙方在JavaScript的創建和上傳對象。

// create a `File` object 
const file = new File(["abc"], "file.txt", {type:"text/plain"}); 
// create a `Blob` object 
// will be converted to a `File` object when passed to `FormData` 
const blob = new Blob(["abc"], {type:"text/plain"});  
const fd = new FormData(); 
fd.append("file", blob, "file.txt"); 
+0

AWS sdk接受文件,而不是字符串。這是我們需要的。謝謝。 – Bob

1

你可以嘗試這樣的事:

var fs = require('fs'); 
exports.upload = function (req, res) { 
    var file = req.files.file; 
    fs.readFile(file.path, function (err, data) { 
     if (err) throw err; // Something went wrong! 
     var s3bucket = new AWS.S3({params: {Bucket: 'mybucketname'}}); 
     s3bucket.createBucket(function() { 
      var params = { 
       Key: file.originalFilename, //file.name doesn't exist as a property 
       Body: data 
      }; 
      s3bucket.upload(params, function (err, data) { 
       // Whether there is an error or not, delete the temp file 
       fs.unlink(file.path, function (err) { 
        if (err) { 
         console.error(err); 
        } 
        console.log('Temp File Delete'); 
       }); 

       console.log("PRINT FILE:", file); 
       if (err) { 
        console.log('ERROR MSG: ', err); 
        res.status(500).send(err); 
       } else { 
        console.log('Successfully uploaded data'); 
        res.status(200).end(); 
       } 
      }); 
     }); 
    }); 
};