请问有人能够展示如何使用AWS JavaScript将画布图像上传到S3服务器吗?
我在使用JavaScript SDK上传图像至Amazon S3服务器时遇到了一些问题,需要实现以下步骤:
-> 在HTML5画布上创建图像并在JavaScript中调整图像大小。
-> 然后将图像上传至Amazon S3服务器。
但问题是:
*) 当将图像上传至S3服务器时,它会上传像素信息而非图像。
因此,在预览S3浏览器时,使用以下代码会显示图像流而非图像。
此外,AWS Javascript支持以下格式的Body: Buffer,Typed Array,Blob,String,ReadableStream。
以下是代码:
HTML代码
这怎么做呢?
我在使用JavaScript SDK上传图像至Amazon S3服务器时遇到了一些问题,需要实现以下步骤:
-> 在HTML5画布上创建图像并在JavaScript中调整图像大小。
-> 然后将图像上传至Amazon S3服务器。
但问题是:
*) 当将图像上传至S3服务器时,它会上传像素信息而非图像。
因此,在预览S3浏览器时,使用以下代码会显示图像流而非图像。
此外,AWS Javascript支持以下格式的Body: Buffer,Typed Array,Blob,String,ReadableStream。
以下是代码:
HTML代码
<canvas id="myCanvas" width="800" height="800" style="background-color: greenyellow;">Your browser doesn't support html5! Please download the latest version.
</canvas>
<input type="button" id="upload-button" value="Upload to S3" />
<script src="https://sdk.amazonaws.com/js/aws-sdk-2.0.4.min.js"></script>
<script type="text/javascript">
AWS.config.update({ accessKeyId: 'ACCESSKEY', secretAccessKey: 'SECRETKEY' });
AWS.config.region = 'ap-southeast-1';
$(function () {
$("#upload-button").click(OnUpload);
});
function OnUpload(){
var canvas = document.getElementById("myCanvas");
var ctx = canvas.getContext("2d");
var img = new Image();
img.src = 'Images/IMG_0001.JPG';
img.onload = function () {
<!--image resize -->
var MAX_WIDTH = 200;
var MAX_HEIGHT = 200;
var width = img.width;
var height = img.height;
if (width > height) {
if (width > MAX_WIDTH) {
height *= MAX_WIDTH / width;
width = MAX_WIDTH;
}
} else {
if (height > MAX_HEIGHT) {
width *= MAX_HEIGHT / height;
height = MAX_HEIGHT;
}
}
canvas.width = width;
canvas.height = height;
ctx.drawImage(img, 0, 0, width, height);
<!--image resize end-->
var imageData = ctx.getImageData(0, 0, width, height);
var typedArray = imageData.data;
var bucket = new AWS.S3({ params: { Bucket: 'bucketName' } });
var results = document.getElementById('results');
results.innerHTML = '';
var params = { Key: "sample.png", ContentType: "image/png", Body: typedArray };
bucket.putObject(params, function (err, data) {
results.innerHTML = err ? 'ERROR!' : 'UPLOADED.';
});
}
}
</script>
这怎么做呢?