Skip to content

Commit d6ff5d8

Browse files
committed
Initial Commit
0 parents  commit d6ff5d8

File tree

3 files changed

+142
-0
lines changed

3 files changed

+142
-0
lines changed

index.html

+36
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
<!doctype html>
2+
<html lang="en">
3+
4+
<head>
5+
<title>Title</title>
6+
<!-- Required meta tags -->
7+
<meta charset="utf-8">
8+
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
9+
10+
<!-- Bootstrap CSS -->
11+
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css" integrity="sha384-ggOyR0iXCbMQv3Xipma34MD+dH/1fQ784/j6cY/iJTQUOhcWr7x9JvoRxT2MZw1T" crossorigin="anonymous">
12+
<style>
13+
.preview {
14+
height: 300px;
15+
width: 300px;
16+
background: black;
17+
}
18+
</style>
19+
</head>
20+
21+
<body>
22+
23+
<div class="container">
24+
<div id="upload-area">
25+
<input type="file" id="file">
26+
<img style="border: 1px solid gray;" id="preview" src="https://via.placeholder.com/350x150" />
27+
</div>
28+
</div>
29+
30+
<!-- Optional JavaScript -->
31+
<!-- jQuery first, then Popper.js, then Bootstrap JS -->
32+
<script src="https://code.jquery.com/jquery-3.5.1.min.js" integrity="sha256-9/aliU8dGd2tb6OSsuzixeV4y/faTqgFtohetphbbj0=" crossorigin="anonymous"></script>
33+
<script src="./script.js"></script>
34+
</body>
35+
36+
</html>

script.js

+91
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,91 @@
1+
/* Utility function to convert a canvas to a BLOB */
2+
var dataURLToBlob = function(dataURL) {
3+
var BASE64_MARKER = ';base64,';
4+
if (dataURL.indexOf(BASE64_MARKER) == -1) {
5+
var parts = dataURL.split(',');
6+
var contentType = parts[0].split(':')[1];
7+
var raw = parts[1];
8+
9+
return new Blob([raw], { type: contentType });
10+
}
11+
12+
var parts = dataURL.split(BASE64_MARKER);
13+
var contentType = parts[0].split(':')[1];
14+
var raw = window.atob(parts[1]);
15+
var rawLength = raw.length;
16+
17+
var uInt8Array = new Uint8Array(rawLength);
18+
19+
for (var i = 0; i < rawLength; ++i) {
20+
uInt8Array[i] = raw.charCodeAt(i);
21+
}
22+
23+
return new Blob([uInt8Array], { type: contentType });
24+
}
25+
26+
27+
$('#file').change(function() {
28+
29+
//Baca file dari input
30+
let file = $(this)[0].files[0]
31+
32+
let reader = new FileReader();
33+
34+
reader.readAsDataURL(file);
35+
36+
reader.onload = (readEvent) => {
37+
38+
let target = readEvent.target;
39+
40+
let image = new Image();
41+
image.onload = (imageEvent) => {
42+
43+
let def_width = 300;
44+
let def_percent = (def_width / image.width) * 100;
45+
46+
let canvas = document.createElement('canvas');
47+
let width = def_width;
48+
let height = image.height * (def_percent / 100);
49+
50+
canvas.width = width;
51+
canvas.height = height;
52+
53+
// canvas.getContext('2d').drawImage()
54+
canvas.getContext('2d').drawImage(image, 0, 0, width, height);
55+
56+
let dataURL = canvas.toDataURL(file.type);
57+
58+
// console.log(dataURL);
59+
60+
let formdata = new FormData();
61+
let blobImage = dataURLToBlob(dataURL);
62+
63+
formdata.append('file', blobImage, `resized-image_${file.name}`);
64+
65+
66+
$('#preview').attr('src', dataURL);
67+
68+
$.ajax({
69+
type: "POST",
70+
url: "./upload.php",
71+
success: function(data) {
72+
// your callback here
73+
console.log(data);
74+
},
75+
error: function(error) {
76+
// handle error
77+
},
78+
async: true,
79+
data: formdata,
80+
cache: false,
81+
contentType: false,
82+
processData: false,
83+
timeout: 60000
84+
});
85+
86+
}
87+
88+
image.src = target.result
89+
90+
}
91+
})

upload.php

+15
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
<?php
2+
// print_r($_FILES);
3+
4+
$dir = './uploads';
5+
$file = $_FILES['file'];
6+
print_r($file['tmp_name']);
7+
$destination = $dir.'/'.time().'-'.$file['name'];
8+
9+
move_uploaded_file($file['tmp_name'], $destination);
10+
11+
header('content-type: application/json');
12+
echo json_encode([
13+
'status' => true,
14+
'message' => "Berhasil diupload."
15+
]);

0 commit comments

Comments
 (0)