164 lines
5.3 KiB
JavaScript
164 lines
5.3 KiB
JavaScript
|
|
|
|
$(function () {
|
|
function checkMimeTypes(mimeTypesTest) {
|
|
var mimeDetect=false;
|
|
Config_mimeTypes.forEach(function(item, index, array) {
|
|
var regex = item.replace(/\//g, "\\\/");
|
|
if (mimeTypesTest.match(regex) != undefined) {
|
|
mimeDetect=true;
|
|
}
|
|
});
|
|
if ((Config_mimeTypesConduct == 'allow' && mimeDetect)
|
|
|| (Config_mimeTypesConduct == 'deny' && !mimeDetect)) {
|
|
return true;
|
|
} else {
|
|
return false;
|
|
}
|
|
}
|
|
/**
|
|
* Function called to upload one file.
|
|
* @param file
|
|
* @param item
|
|
*/
|
|
function uploadFile(item, file, expire, random, resize, key) {
|
|
|
|
// Add progress bar
|
|
$('.progress').show();
|
|
$('.progress').append('<span class="file-' + item + '">' + file.name + '</span><br /><progress class="progress-' + item + '" value="0" max="100"></progress>');
|
|
|
|
// Create object XMLHttpRequest
|
|
var request = new XMLHttpRequest();
|
|
|
|
// Event progress to change value of progress bar
|
|
request.upload.addEventListener('progress', function (e) {
|
|
$('.progress-' + item).css('display', 'block');
|
|
var value = Math.round((e.loaded / e.total) * 100);
|
|
$('.progress-' + item).attr("value", value);
|
|
}, false);
|
|
|
|
// Create object FormData
|
|
var formData = new FormData();
|
|
// Add file to FormData
|
|
formData.append('random', random);
|
|
formData.append('item', item);
|
|
formData.append('file', file);
|
|
formData.append('expire', expire);
|
|
formData.append('resize', resize);
|
|
formData.append('key', key);
|
|
|
|
// File to call
|
|
request.open('post', 'upload.php');
|
|
// Function called when request ended
|
|
request.onload = function (e) {
|
|
$('#result').append(request.response);
|
|
};
|
|
// Send request
|
|
request.send(formData);
|
|
}
|
|
|
|
/**
|
|
* Function called to upload files.
|
|
*/
|
|
function upload() {
|
|
// Vide les messages si jamais il y en avait
|
|
$( "#preUpload" ).html( "" );
|
|
var upload = true;
|
|
// Get files
|
|
var files = $('#files')[0].files;
|
|
var expire = Math.floor(Date.now() / 1000 + $('#expire').val() * 86400);
|
|
var random = Math.floor(Math.random() * Math.floor(99));
|
|
|
|
// Check size and mime
|
|
var fileAlreadyUploadSizeTotal = 0;
|
|
for (var i = 0; i < files.length; i++) {
|
|
// Size
|
|
fileAlreadyUploadSizeTotal = fileAlreadyUploadSizeTotal + document.getElementById("files").files[i].size;
|
|
if (document.getElementById("files").files[i].size > Config_maxUploadPerFile) {
|
|
$('#preUpload').append('<div class="highlight-1">' + document.getElementById("files").files[i].name + ' : ' + Msg_errorFileSize + '</div>');
|
|
upload = false;
|
|
}
|
|
// Mime
|
|
if (!checkMimeTypes(document.getElementById("files").files[i].type)) {
|
|
$('#preUpload').append('<div class="highlight-1">' + document.getElementById("files").files[i].name + ' : ' + Msg_errorFileType + '</div>');
|
|
upload = false;
|
|
}
|
|
}
|
|
if (fileAlreadyUploadSizeTotal > Config_maxUploadTotal) {
|
|
$('#preUpload').append('<div class="highlight-1">' + Msg_errorTotalSize + '</div>');
|
|
upload = false;
|
|
}
|
|
if (files.length > Config_maxUploadNb) {
|
|
$('#preUpload').append('<div class="highlight-1">' + Msg_errorUploadNb + '</div>');
|
|
upload = false;
|
|
}
|
|
if (files.length == 0) {
|
|
upload = false;
|
|
}
|
|
// Upload file by file
|
|
if (upload == true) {
|
|
// Session pour compter le nombre de fichier en cours de download
|
|
sessionStorage.setItem('uploadWait', files.length);
|
|
$( ".uploadArea" ).hide();
|
|
// On lance l'upload fichier par fichier:
|
|
for (var i = 0; i < files.length; i++) {
|
|
if (i == 0) {
|
|
// On mémorise l'upload dans le localStorage
|
|
if (localStorage.getItem('myFiles')) {
|
|
var data = JSON.parse(localStorage.getItem('myFiles'));
|
|
} else {
|
|
var data = {items: []};
|
|
}
|
|
var keyGen = Math.floor(Math.random() * (999999999999 - 100000000000) + 100000000000);
|
|
data.items.push(
|
|
{id: expire + '-' + random, key: keyGen}
|
|
);
|
|
localStorage.setItem('myFiles', JSON.stringify(data));
|
|
}
|
|
uploadFile(i, files[i], expire, random, $('#resize').val(), keyGen);
|
|
}
|
|
}
|
|
}
|
|
|
|
// Copy on clipart : https://stackoverflow.com/questions/44888884/copying-to-clipboard-textbox-value-using-jquery-javascript
|
|
function copyToClipboard(text) {
|
|
var textArea = document.createElement( "textarea" );
|
|
textArea.value = text;
|
|
document.body.appendChild( textArea );
|
|
textArea.select();
|
|
try {
|
|
var successful = document.execCommand( 'copy' );
|
|
var msg = successful ? 'successful' : 'unsuccessful';
|
|
} catch (err) {
|
|
console.log('Oops, unable to copy');
|
|
}
|
|
document.body.removeChild( textArea );
|
|
}
|
|
|
|
$('.btn-upload').on('click', upload);
|
|
|
|
$( "#similarServices" ).click(function() {
|
|
$('.similarHref').hide();
|
|
$('.similarLink').show();
|
|
});
|
|
|
|
|
|
|
|
$(document).on('click', '.copy', function(e){
|
|
e.preventDefault();
|
|
copyToClipboard($(this).val());
|
|
});
|
|
|
|
$("input[type=file]").on('change',function(){
|
|
$('#resizeForm').hide();
|
|
for (var i = 0; i < this.files.length; i++) {
|
|
var mime = this.files[i].type;
|
|
if (mime.match('^image\/(png|jpeg|gif)$')) {
|
|
$('#resizeForm').show();
|
|
}
|
|
}
|
|
});
|
|
|
|
});
|
|
|