Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions filebrowser_safe/functions.py
Original file line number Diff line number Diff line change
Expand Up @@ -184,6 +184,7 @@ def get_settings_var():
settings_var["SELECT_FORMATS"] = fb_settings.SELECT_FORMATS
# FileBrowser Options
settings_var["MAX_UPLOAD_SIZE"] = fb_settings.MAX_UPLOAD_SIZE
settings_var["MAX_IMAGE_UPLOAD_SIZE"] = fb_settings.MAX_IMAGE_UPLOAD_SIZE
# Convert Filenames
settings_var["CONVERT_FILENAME"] = fb_settings.CONVERT_FILENAME
return settings_var
Expand Down
3 changes: 3 additions & 0 deletions filebrowser_safe/settings.py
Original file line number Diff line number Diff line change
Expand Up @@ -91,6 +91,9 @@
MAX_UPLOAD_SIZE = getattr(
settings, "FILEBROWSER_MAX_UPLOAD_SIZE", settings.FILE_UPLOAD_MAX_MEMORY_SIZE
)
MAX_IMAGE_UPLOAD_SIZE = getattr(
settings, "FILEBROWSER_MAX_IMAGE_UPLOAD_SIZE", MAX_UPLOAD_SIZE
)
# Normalize filename and remove all non-alphanumeric characters
# except for underscores, spaces & dashes.
NORMALIZE_FILENAME = getattr(settings, "FILEBROWSER_NORMALIZE_FILENAME", False)
Expand Down
28 changes: 23 additions & 5 deletions filebrowser_safe/static/filebrowser/js/upload.js
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@
var doneRedirect = formData.redirectWhenDone || '/';
var extensions = formData.allowedExtensions && formData.allowedExtensions.split(',');
var allowedSize = formData.sizeLimit && parseInt(formData.sizeLimit);
var allowedImageSize = formData.sizeImageLimit && parseInt(formData.sizeImageLimit);

form.on('change', 'input[type="file"]', function(e){
var input = this;
Expand All @@ -24,6 +25,7 @@
var status = resultElement.find('.status');
var hasExtensionError = !validateExtension(selectedFile, extensions);
var hasSizeError = !validateSize(selectedFile, allowedSize);
var hasImageSizeError = !validateImageSize(selectedFile, allowedImageSize);

resultElement.addClass('selected');

Expand All @@ -35,10 +37,12 @@
$(resultElement[0].outerHTML).removeClass('selected').insertAfter(resultElement);

// shows the error message if there was an error
if(hasExtensionError || hasSizeError) {
status
.addClass('error')
.text(hasSizeError ? formData.sizeError : formData.extensionError);
if(hasExtensionError) {
status.addClass('error').text(formData.extensionError);
}else if (hasSizeError) {
status.addClass('error').text(formData.sizeError);
}else if (hasImageSizeError) {
status.addClass('error').text(formData.sizeImageError);
}else if(selectedFile) {
function resume() {
// display the selected file's name
Expand Down Expand Up @@ -88,7 +92,7 @@
element.removeClass('selected').addClass('in-progress');

// when failed, show the error message
promise.fail(function(){
promise.fail(function(jqXHR, textStatus, errorThrown){
element.find('.status').addClass('error').text(formData.serverError);
});

Expand Down Expand Up @@ -241,6 +245,20 @@
return true;
}


// checks whether an image's size is under the limit
function validateImageSize(file, allowed){
if(file && allowed && file.type.startsWith('image')){
if(typeof allowed === 'number' && !global.isNaN(allowed)){
return file.size <= allowed;
}

return false;
}

return true;
}

// turns the result of jQuery's serializeArray into a proper object
function serializeToObject(array){
var output = {};
Expand Down
11 changes: 10 additions & 1 deletion filebrowser_safe/templates/filebrowser/upload.html
Original file line number Diff line number Diff line change
Expand Up @@ -41,8 +41,10 @@
data-redirect-when-done="{% url 'fb_browse' %}{% query_string '' 'p' %}"
data-allowed-extensions="{% allowed_extensions_list %}"
data-size-limit="{{ settings_var.MAX_UPLOAD_SIZE|unlocalize }}"
data-size-image-limit="{{ settings_var.MAX_IMAGE_UPLOAD_SIZE|unlocalize }}"
data-server-error="{% trans 'There was a server error when uploading the file.' %}"
data-size-error="{% trans 'The file size is larger than the limit.' %}"
data-size-error="{% trans 'The file size exceeds the limit of' %} {{ settings_var.MAX_UPLOAD_SIZE|filesizeformat }}"
data-size-image-error="{% trans 'The image file size exceeds the limit of' %} {{ settings_var.MAX_IMAGE_UPLOAD_SIZE|filesizeformat }}"
data-extension-error="{% trans 'The file extension is not allowed.' %}">

<div>
Expand Down Expand Up @@ -85,6 +87,13 @@ <h2>{% trans "Help" %}</h2>
<label class="required">{% trans "Max. Filesize" %}:</label>
<p>{{ settings_var.MAX_UPLOAD_SIZE|filesizeformat }}</p>
</div>
{% if settings_var.MAX_IMAGE_UPLOAD_SIZE != settings_var.MAX_UPLOAD_SIZE %}
<div class="form-row" >
<label class="required">{% trans "Max. Image Filesize" %}:</label>
<p>{{ settings_var.MAX_IMAGE_UPLOAD_SIZE|filesizeformat }}</p>
</div>
{% endif %}

{% if settings_var.CONVERT_FILENAME %}
<div class="form-row" >
<label class="required">&nbsp;</label>
Expand Down