forked from rDrama/rDrama
1
0
Fork 0

check file size via javascript to prevent unneedful upload of files that would get rejected by server for being too large

master
Aevann 2023-08-12 21:28:21 +03:00
parent ceb126dae4
commit 1ed722c3b2
5 changed files with 52 additions and 7 deletions

View File

@ -449,9 +449,42 @@ function insertText(input, text) {
let oldfiles = {};
const MAX_IMAGE_AUDIO_SIZE_MB = parseInt(document.getElementById("MAX_IMAGE_AUDIO_SIZE_MB").value)
const MAX_IMAGE_AUDIO_SIZE_MB_PATRON = parseInt(document.getElementById("MAX_IMAGE_AUDIO_SIZE_MB_PATRON").value)
const MAX_VIDEO_SIZE_MB = parseInt(document.getElementById("MAX_VIDEO_SIZE_MB").value)
const MAX_VIDEO_SIZE_MB_PATRON = parseInt(document.getElementById("MAX_VIDEO_SIZE_MB_PATRON").value)
let patron
if (location.host == 'rdrama.net') patron = 'paypig'
else patron = 'patron'
function handle_files(input, newfiles) {
if (!newfiles) return;
for (const file of newfiles) {
let max_size
let max_size_patron
let type
if (file.type.startsWith('video/')) {
max_size = MAX_VIDEO_SIZE_MB
max_size_patron = MAX_VIDEO_SIZE_MB_PATRON
type = 'video'
}
else {
max_size = MAX_IMAGE_AUDIO_SIZE_MB
max_size_patron = MAX_IMAGE_AUDIO_SIZE_MB_PATRON
type = 'image/audio'
}
if (file.size > max_size * 1024 * 1024) {
const msg = `Max ${type} size is ${max_size} MB (${max_size_patron} MB for ${patron}s)`
showToast(false, msg);
input.value = null;
return
}
}
const ta = input.parentElement.parentElement.parentElement.parentElement.querySelector('textarea.file-ta');
if (oldfiles[ta.id]) {

View File

@ -829,6 +829,9 @@ elif SITE == 'watchpeopledie.tv':
CHANGELOG_THREAD = 56363
ADMIGGER_THREADS = {SIDEBAR_THREAD, BANNER_THREAD, BADGE_THREAD, CHANGELOG_THREAD}
MAX_VIDEO_SIZE_MB = 500
MAX_VIDEO_SIZE_MB_PATRON = 500
TRUESCORE_CHAT_MINIMUM = 10
HOLE_NAME = 'flair'

View File

@ -136,11 +136,10 @@ def process_video(file, v):
old = f'/videos/{time.time()}'.replace('.','')
file.save(old)
if SITE_NAME != 'WPD':
size = os.stat(old).st_size
if size > MAX_VIDEO_SIZE_MB_PATRON * 1024 * 1024 or (not v.patron and size > MAX_VIDEO_SIZE_MB * 1024 * 1024):
os.remove(old)
abort(413, f"Max video size is {MAX_VIDEO_SIZE_MB} MB ({MAX_VIDEO_SIZE_MB_PATRON} MB for {patron}s)")
size = os.stat(old).st_size
if size > MAX_VIDEO_SIZE_MB_PATRON * 1024 * 1024 or (not v.patron and size > MAX_VIDEO_SIZE_MB * 1024 * 1024):
os.remove(old)
abort(413, f"Max video size is {MAX_VIDEO_SIZE_MB} MB ({MAX_VIDEO_SIZE_MB_PATRON} MB for {patron}s)")
extension = guess_extension(file.content_type)
if not extension:

View File

@ -126,5 +126,7 @@ def inject_constants():
"BIO_FRIENDS_ENEMIES_LENGTH_LIMIT":BIO_FRIENDS_ENEMIES_LENGTH_LIMIT,
"IMMUNE_TO_AWARDS": IMMUNE_TO_AWARDS, "SITE_FULL_IMAGES": SITE_FULL_IMAGES,
"IS_FISTMAS":IS_FISTMAS, "IS_HOMOWEEN":IS_HOMOWEEN, "IS_DKD":IS_DKD, "IS_EVENT":IS_EVENT, "IS_BIRTHGAY":IS_BIRTHGAY,
"CHUD_PHRASES":CHUD_PHRASES, "hasattr":hasattr, "calc_users":calc_users, "HOLE_INACTIVITY_DELETION":HOLE_INACTIVITY_DELETION
}
"CHUD_PHRASES":CHUD_PHRASES, "hasattr":hasattr, "calc_users":calc_users, "HOLE_INACTIVITY_DELETION":HOLE_INACTIVITY_DELETION,
"MAX_IMAGE_AUDIO_SIZE_MB":MAX_IMAGE_AUDIO_SIZE_MB, "MAX_IMAGE_AUDIO_SIZE_MB_PATRON":MAX_IMAGE_AUDIO_SIZE_MB_PATRON,
"MAX_VIDEO_SIZE_MB":MAX_VIDEO_SIZE_MB, "MAX_VIDEO_SIZE_MB_PATRON":MAX_VIDEO_SIZE_MB_PATRON,
}

View File

@ -35,6 +35,14 @@
<input hidden id="IMAGE_FORMATS" value="{{IMAGE_FORMATS}}">
<input hidden id="approved_embed_hosts" value="{{approved_embed_hosts}}">
<input hidden id="SITE_FULL_IMAGES" value="{{SITE_FULL_IMAGES}}">
{% if v %}
<input hidden id="MAX_IMAGE_AUDIO_SIZE_MB" value="{{MAX_IMAGE_AUDIO_SIZE_MB}}">
<input hidden id="MAX_IMAGE_AUDIO_SIZE_MB_PATRON" value="{{MAX_IMAGE_AUDIO_SIZE_MB_PATRON}}">
<input hidden id="MAX_VIDEO_SIZE_MB" value="{{MAX_VIDEO_SIZE_MB}}">
<input hidden id="MAX_VIDEO_SIZE_MB_PATRON" value="{{MAX_VIDEO_SIZE_MB_PATRON}}">
{% endif %}
<script src="{{'js/top.js' | asset}}"></script>
{% block body required %}{% endblock %}
{{html_head.stylesheets_lower()}}