Files
old-web/app/views/publishPhotos.ejs

111 lines
3.4 KiB
Plaintext
Raw Normal View History

2020-02-13 17:08:49 +01:00
<br>
2020-02-14 00:37:11 +01:00
<div class="mdl-textfield mdl-js-textfield mdl-textfield--file">
<input type="file" id="selector">
</div>
2020-02-13 17:08:49 +01:00
2020-02-14 00:37:11 +01:00
<input class="mdl-button mdl-button--raised mdl-button--colored" type="button" value="Upload"
onclick="generateSignedURL()">
<div class="mdl-textfield mdl-js-textfield mdl-textfield--file" id="status"></div>
2020-03-09 18:00:31 +01:00
<s>******************************</s>
<div action="/photos-upload" class="dropzone" id="photos-upload">
<div class="fallback">
<input name="file" type="file" multiple />
</div>
</div>
<button id="test">TEST</button>
<input type="hidden" name="imageUrls" id="imageUrls" value="">
2020-02-14 00:37:11 +01:00
<script type="text/javascript">
2020-03-09 18:00:31 +01:00
$(document).ready(function(){
// Manual dropzone init
const dropzoneOptions = {
url: "/photos-upload", //can be a function that returns url ?
autoProcessQueue:false, //not to upload files automaticly
method: "put", //or post
parallelUploads: 1,
uploadMultiple: false, //or true ??
addRemoveLinks: true,
maxFilesize: 2, //MB,
resizeWidth: 600,
maxFiles: 10, // ??
acceptedFiles: "image/*",
accept: function(file, done){
console.log('test');
},
dictDefaultMessage: `<span class="text-center">
<h3>Prevuci fotografije ili klikni za dodavanje!</h3>
</span>`,
dictResponseError: 'Error uploading file!',
dictRemoveFile: 'Izbriši '
};
var photosUploader = new Dropzone('#photos-upload', dropzoneOptions);
$("#test").click(function(e){
e.preventDefault();
const addedFiles = photosUploader.files.filter(file => file.status==="added");
addedFiles.forEach( file => {
generateSignedURL(file);
})
});
});
2020-02-14 00:37:11 +01:00
function uuidv4() {
return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) {
2020-03-09 18:00:31 +01:00
const r = Math.random() * 16 | 0, v = c == 'x' ? r : (r & 0x3 | 0x8);
2020-02-14 00:37:11 +01:00
return v.toString(16);
});
}
2020-03-09 18:00:31 +01:00
function getFileName(fileName) {
const encodedFileName = (uuidv4() + fileName).replace(/\s+/g, '');
return encodedFileName;
2020-02-14 00:37:11 +01:00
}
2020-02-13 17:08:49 +01:00
2020-02-14 00:37:11 +01:00
function upload() {
var file = $('#selector')[0].files[0];
uploadFile(file)
}
2020-02-13 17:08:49 +01:00
2020-03-09 18:00:31 +01:00
async function generateSignedURL(file) {
const fileName = getFileName(file.name);
const response = await fetch('/generateSignedURL?filename=' + fileName);
2020-02-14 00:37:11 +01:00
if (!response.ok) {
throw new Error('Network response for fetch was not ok.');
2020-02-13 17:08:49 +01:00
}
2020-03-09 18:00:31 +01:00
let signedUrl = await response.text();
signedUrl = signedUrl.replace(/\"/g, "")
// console.log("Got signedURL: " + c)
// console.log("Trying to upload " + fileName)
uploadFile(file, fileName, signedUrl);
// console.log("Complete")
2020-02-14 00:37:11 +01:00
return false;
}
2020-02-13 17:08:49 +01:00
2020-03-09 18:00:31 +01:00
function uploadFile(file, fileName, url) {
2020-02-14 00:37:11 +01:00
$("#status").html('Starting Upload...')
2020-02-18 23:49:00 +01:00
fetch(url, {
2020-02-14 00:37:11 +01:00
method: 'PUT',
2020-02-26 14:56:00 +01:00
headers: new Headers({'content-type': 'image/*'}),
2020-02-14 22:27:41 +01:00
mode: 'cors',
2020-02-14 00:37:11 +01:00
body: file
})
.then(response => response.text())
2020-02-14 22:27:41 +01:00
.then (response => {
return response;
}
)
2020-02-14 00:37:11 +01:00
.catch(error => $("#status").html(error)
)
2020-03-09 18:00:31 +01:00
.then(response => {
$("#status").html('File uploaded successfully: ' + fileName )
$("#imageUrls").val($("#imageUrls").val()+ fileName+"|");
});
2020-02-18 23:49:00 +01:00
2020-02-14 00:37:11 +01:00
}
2020-02-13 17:08:49 +01:00
</script>