2015-11-18 2 views
2

Прямо сейчас, я прошел холст данные URI строкаКак загрузить холст URI данных на сервер s3 амазонки

(данные: изображение/PNG; base64, iVBORw0KGgoAAAANSUhEUgAAAUAAAADwCAYAAABxLb1rAAAgAElEQVR ..... )

к моему серверу hapi (NodeJS).

Мой вопрос:

Каковы мои дальнейшие шаги в «поток»/загрузить эти данные на Amazon S3 и создают реальное изображение там?

+0

Так что вопрос в том, как вы загружаете из nodejs Амазонке S3. –

+0

Вам нужно создать поток из этого изображения base64 и загрузить поток на S3 –

+4

Если при поиске SO уже вы найдете http://stackoverflow.com/questions/7511321/uploading-base64-encoded-image-to-amazon- s3-via-node-js? rq = 1 и http://stackoverflow.com/questions/5867534/how-to-save-canvas-data-to-file/5971674#5971674? Позвольте мне угадать, что вы даже не искали. –

ответ

0

перед объектом отправки на s3 вы должны преобразовать base64 в буфер и после отправки, например:

var buf = new Buffer(b64string, 'base64'); 
s3.putObject({/*some params*/, Body: buf}, function(err, data) { 
    if (err) console.log(err, err.stack); // an error occurred 
    else  console.log(data);   // successful response 
}); 

После этого вы отправляете данные s3, и вы можете открыть изображение без декодирования.

Удачи вам!

0
  1. Храните свой URI данных в vaiable.
  2. Создать функцию, которая декодирует ваши данные URI (64 бит закодированной строки) в строку (Здесь я создал dataURItoBlob() функции) и после декодирования возвращает строку
  3. Передайте эту строку в тела из S3 загрузки функция

    var myDataUri = "data:application/pdf;base64,JVBERi0xLjMKMyAwIG9iago8PC9UeXBlIC9QYW..." 
    
    var myFile=dataURItoBlob(myDataUri); 
    
    function dataURItoBlob(dataURI) { 
        console.log('1: ',dataURI); 
        var binary = atob(dataURI.split(',')[1]); 
        var array = []; 
        console.log('2: ',binary.length); 
        for (var i = 0; i < binary.length; i++) { 
         array.push(binary.charCodeAt(i)); 
        } 
        return new Blob([new Uint8Array(array)], { 
        type: 'application/pdf' 
        }); 
    } 
    
    if (myFile)) { 
        results.innerHTML = ''; 
        var params = { 
        Key: new Date().getTime() + '.pdf', 
        ContentType: 'application/pdf', 
        Body: myFile 
        }; 
    
        bucket.upload(params, function(err, data) { 
        results.innerHTML = err ? 'ERROR!' : 'UPLOADED.: ' + file; 
        }); 
    } else { 
    results.innerHTML = 'Nothing to upload.'; 
    } 
    
Смежные вопросы