7

aws 서버에 파일을 업로드 할 때 nodejs를 사용하고 있습니다. 파일 크기가 올바르지 않음을 발견했습니다. 나는 2.1KB를 얻고있다. 난 내 AWS 버킷에 파일 이름을 가지고,하지만스트리밍 - s3에서 aws 파일을 올바로 사용하지 못했습니다.

여기 내 코드

var uploadFile = function (fileReadStream, awsHeader, cb) { 

    //set options for the streaming module 
    var options = { 
     concurrentParts: 2, 
     waitTime: 20000, 
     retries: 2, 
     maxPartSize: 10 * 1024 * 1024 
    }; 
    //call stream function to upload the file to s3 
    var uploader = new streamingS3(fileReadStream, config.aws.accessKey, config.aws.secretKey, awsHeader, options); 
    //start uploading 
    uploader.begin();// important if callback not provided. 

    // handle these functions 
    uploader.on('data', function (bytesRead) { 
     //console.log(bytesRead, ' bytes read.'); 
    }); 

    uploader.on('part', function (number) { 
     //console.log('Part ', number, ' uploaded.'); 
    }); 

    // All parts uploaded, but upload not yet acknowledged. 
    uploader.on('uploaded', function (stats) { 
     //console.log('Upload stats: ', stats); 
    }); 

    uploader.on('finished', function (response, stats) { 
     console.log(response); 
     cb(null, response); 
    }); 

    uploader.on('error', function (err) { 
     console.log('Upload error: ', err); 
     cb(err); 
    }); 

}; 

입니다. 그런 다음 실패했다고하는 파일을 열려고합니다. 나는 URL에서이 파일을 업로드하려고

: https://arxiv.org/pdf/1701.00003.pdf

어떤 제안하십시오?

감사 S3에 스트림을 업로드하기위한 외부 모듈에 대한 더 이상 필요가 없습니다

답변

2

. aws-sdk에 임의의 크기의 버퍼, blob 또는 스트림을 업로드 할 수있는 s3.upload이라는 새 메서드가 있습니다. (가) 여기 내 요점은 더욱 난 당신이 당신의 질문에 게시 된 PDF 파일과 코드를 시도 증명하기 위해

const aws = require('aws-sdk'); 
 
const s3 = new aws.S3({ 
 
    credentials:{ 
 
     accessKeyId: "ACCESS_KEY", 
 
     secretAccessKey: "SECRET_ACCESS_KEY" 
 
    } 
 
}); 
 
const fs = require('fs'); 
 
const got = require('got'); 
 

 
//fs stream test 
 
s3.upload({ 
 
    Bucket: "BUCKET_NAME", 
 
    Key: "FILE_NAME", 
 
    ContentType: 'text/plain', 
 
    Body: fs.createReadStream('SOME_FILE') 
 
}) 
 
.on("httpUploadProgress", progress => console.log(progress)) 
 
.send((err,resp) => { 
 
    if(err) return console.error(err); 
 
    console.log(resp); 
 
}) 
 

 

 
//http stream test 
 
s3.upload({ 
 
    Bucket: "BUCKET_NAME", 
 
    Key: "FILE_NAME", 
 
    ContentType: 'application/pdf', 
 
    Body: got.stream('https://arxiv.org/pdf/1701.00003.pdf') 
 
}) 
 
.on("httpUploadProgress", progress => console.log(progress)) 
 
.send((err,resp) => { 
 
    if(err) return console.error(err); 
 
    console.log(resp); 
 
})

과 : 당신은 here

내가 사용하는 코드를 문서를 확인하실 수 있습니다 link 내 테스트 통에 대한 PDF가 예상대로 작동 함을 보여줍니다.

+0

: - 위의 코드를 사용하는 경우에만 해당 URL에서 문제가 발생합니다. 이제 프로젝트가 완료되었습니다. 코드를 변경하는 데 아무런 포인트가 없습니다 –

+0

위의 코드에서 문제가 무엇인지 말해 줄 수 있습니까? –