implement text upload

This commit is contained in:
iou1name 2020-01-02 08:31:27 -05:00
parent 8cfb6aaf9a
commit 875041fa71
3 changed files with 38 additions and 2 deletions

View File

@ -41,6 +41,12 @@ async def index(request):
files.append(handle_filefield(filefield, rand_name=rand_name))
if data.get('url'):
files.append(handle_url(data.get('url'), rand_name=rand_name))
if data.get('text'):
files.append(handle_text(
data.get('text'),
data.get('text_filename', ''),
rand_name=rand_name)
)
if data.get('delete_this'):
delete_num = data.get('delete_num', '')
@ -134,6 +140,25 @@ def handle_url(url, rand_name=True):
return tup
def handle_text(text, filename, rand_name=True):
"""Handles a posted text field."""
filename = safe_filename(filename)
if not filename:
rand_name = True
prefix = get_rand_chars()
if rand_name:
filename = prefix + os.path.splitext(filename)[1]
else:
filename = prefix + '_' + filename
filename = filename + '.txt'
with open(os.path.join(config.upload_dir, filename), 'w') as file:
file.write(text)
tup = (prefix, filename)
return tup
def safe_filename(filename=''):
"""Sanitizes the given filename."""
safe_char = string.ascii_letters + string.digits + '._ '

View File

@ -11,3 +11,12 @@ function switchFileTab(span, window_id) {
let tab_window = document.querySelector('#' + window_id);
tab_window.classList.add('tabWindowSelected');
}
function disable_text_filename(checkbox) {
let input = document.querySelector('#text_filename');
if (checkbox.checked) {
input.disabled = true;
} else {
input.disabled = false;
}
}

View File

@ -27,10 +27,12 @@
<input type="url" name="url" placeholder="URL"><br>
</div>
<div id="textTabWindow" class="tabWindow">
Imagine actually using this feature.
<label for="text_filename">Filename:</label>
<input type="text" name="text_filename" id="text_filename" required disabled><br>
<textarea name="text"></textarea>
</div>
</div>
<input type="checkbox" name="rand_name" id="rand_name" checked>
<input type="checkbox" name="rand_name" id="rand_name" onchange="disable_text_filename(this)" checked>
<label for="rand_name">Generate random filename.</label><br>
<input type="hidden" name="response_type" value="html">
<input type="checkbox" name="delete_this" id="delete_this">