Как я могу скачать файл .pptx в aws s3 с помощью модуля fs без ремонта или повреждения? - PullRequest
0 голосов
/ 08 октября 2019

Я занимаюсь разработкой файлового менеджера и хочу поддерживать загрузку и загрузку в aws s3.

Если я нажму кнопку загрузки, сервер EC2 загрузит файл, который я запрашиваю из AWS S3 (я использую aws-sdk модуль). Затем сервер EC2 создает ссылку для загрузки с помощью модуля fs и начинает загрузку файла.

Но, если я загружаю файл '. Pptx' , файл долженбыть отремонтированным. и иногда он не может быть восстановлен на 100%.

Как я могу загрузить файл '.pptx' без повреждений ??

Пожалуйста, дайте мне знать с некоторым кодом или примерами.

Хорошего дня, спасибо.

Этот сервер EC2 является ОС Linux, работает под управлением Mongo DB, Node.js / Express. Сервер EC2 загружает файлы из AWS S3 с помощью модуля aws-sdk / s3. Клиент загружает файлы с сервера EC2 с помощью модуля fs.

Часть маршрутов / File / File.js

router.post('/download', function(req, res, next) {
    // This variable includes file name + extension
    // Ex. example.pptx
    const FileName = req.body.fileName;

    // A Path of Downloaded file in EC2 server
    const FilePath = "files/download/";  

    const FileId = req.body.fileId;
    const RevisionId = req.body.revisionId;
    const BucketName = Config.Bucket;

    const params = {
        Bucket: BucketName + "/" + FileId,
        Key: RevisionId
    };

    let file = fs.createWriteStream('public/' + FilePath + FileName);
    res.send(s3.getObject(params).createReadStream().pipe(file));
});

Часть public / javascripts / File / File.js

function DownloadFile(DownloadHrefId, FileName, FileId, RevisionId) {
    $.ajax({
        url: "/File/download",
        type: "post",
        async: false,
        typeData: "json",
        data: {fileName: FileName, fileId: FileId, revisionId: RevisionId},

        success: function (Result) {
            if (Result) {
                // IE Browser
                if (GetBrowserName() === "ie") {
                    let win = window.open(Result.path.toString().substring(6, Result.path.length), '_blank');
                    win.focus();
                }

                // the other Browser
                else {
                    let DownloadHref = $("#" + DownloadHrefId);
                    DownloadHref.attr("href", Result.path.toString().substring(6, Result.path.length));
                    setTimeout(function () {
                        DownloadHref.get(0).click();
                    },300);
                }
            }
            else {
                //console.log("Download Result Error!");
            }
        }
    })
}
...