Prevent folder / 0 size files from being uploaded.

This commit is contained in:
Daniel Munn 2012-06-07 11:18:49 +01:00
parent 5ed8014964
commit 57a15b3093
4 changed files with 37 additions and 15 deletions

View File

@ -62,8 +62,22 @@ class DmsfUploadController < ApplicationController
f.write(buffer)
end
end
render :layout => false
if File.size("#{DmsfHelper.temp_dir}/#{@disk_filename}") <= 0
begin
File.delete("#{DmsfHelper.temp_dir}/#{@disk_filename}")
rescue
end
render :layout => nil, :json => { :jsonrpc => "2.0",
:error => {
:code => 103,
:message => l(:header_minimum_filesize),
:details => l(:error_minimum_filesize,
:file => @tempfile.original_filename.to_s)
}
}
else
render :layout => false
end
end
#TODO: flash notice when files saved and unlocked

View File

@ -49,7 +49,6 @@ class DmsfMailer < Mailer
end
def send_documents(user, email_to, email_cc, email_subject, zipped_content, email_plain_body)
debugger
zipped_content_data = open(zipped_content, "rb") {|io| io.read }
@body = email_plain_body

View File

@ -98,20 +98,27 @@
pluploader.bind('FileUploaded', function(pluploader, file, response) {
var responseObject = jQuery.parseJSON(response.response);
var disk_filename_input = jQuery("<input/>").attr("type","hidden")
.attr("name","uploaded[" + dmsfFileFieldCount + "][disk_filename]")
.val(responseObject.disk_filename);
uploader.append(disk_filename_input);
var content_type_input = jQuery("<input/>").attr("type","hidden")
.attr("name","uploaded[" + dmsfFileFieldCount + "][content_type]")
.val(responseObject.content_type);
uploader.append(content_type_input);
var original_filename_input = jQuery("<input/>").attr("type","hidden")
.attr("name","uploaded[" + dmsfFileFieldCount + "][original_filename]")
.val(responseObject.original_filename);
uploader.append(original_filename_input);
if (responseObject.error == null) {
var disk_filename_input = jQuery("<input/>").attr("type","hidden")
.attr("name","uploaded[" + dmsfFileFieldCount + "][disk_filename]")
.val(responseObject.disk_filename);
uploader.append(disk_filename_input);
var content_type_input = jQuery("<input/>").attr("type","hidden")
.attr("name","uploaded[" + dmsfFileFieldCount + "][content_type]")
.val(responseObject.content_type);
uploader.append(content_type_input);
var original_filename_input = jQuery("<input/>").attr("type","hidden")
.attr("name","uploaded[" + dmsfFileFieldCount + "][original_filename]")
.val(responseObject.original_filename);
uploader.append(original_filename_input);
} else {
file.status = plupload.FAILED;
responseObject.error.file = file;
pluploader.trigger('Error', responseObject.error);
}
if(pluploader.total.uploaded == pluploader.files.length) jQuery('#uploadform').submit();
else if(pluploader.total.uploaded + pluploader.total.failed == pluploader.files.length) setTimeout(2000, function() {jQuery('#uploadform').submit();})
else dmsfFileFieldCount++;
});
}

View File

@ -186,4 +186,6 @@ en:
:error_max_email_filesize_exceeded: "You've exceeded the maximum filesize for sending via email. (%{number} MB)"
:note_maximum_email_filesize: "Limits maximum filesize that can be sent via email. 0 means unlimited. Number is in MB."
:label_maximum_email_filesize: "Maximum email attachment size"
:header_minimum_filesize: "File Error."
:error_minimum_filesize: "The file %{file} is 0 bytes and will not be attached."