Skip to content

Commit ae5b9df

Browse files
authored
Merge pull request #162 from dk-moelgaard75/filesize
Håndtering af maksimal filstørrelse i forbindelse med upload #161
2 parents 8258620 + c15dbb5 commit ae5b9df

File tree

3 files changed

+54
-18
lines changed

3 files changed

+54
-18
lines changed

README.md

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -227,7 +227,8 @@ I filen er der angivet én eller flere formular konfigurationer. Hver konfigurat
227227

228228
<!-- input - type="file" -->
229229
<!-- Felt til at vedhæfte en fil -->
230-
<input type="file" displayname="Vedhæft tegning:" urlparam="filnavn"/>
230+
<!-- maxfilesize angiver i Mb, hvor stor filen maksimalt må være -->
231+
<input type="file" displayname="Vedhæft tegning:" urlparam="filnavn" maxfilesize="5"/>
231232

232233
<!-- input - type="checkbox" -->
233234
<!-- En check boks hvor brugeren kan vælge til eller fra. Serveren modtager "true", hvis brugeren har valgt at klikke den til, ellers sendes "false".

js/formular.js

Lines changed: 32 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -91,6 +91,7 @@ Formular = SpatialMap.Class ({
9191
groupedLayers: [],
9292

9393
_listeners: [],
94+
maxUploadFileSize: 100,
9495

9596
initialize: function (options) {
9697
SpatialMap.Util.extend (this, options);
@@ -1390,11 +1391,12 @@ Formular = SpatialMap.Class ({
13901391
jQuery('#'+id).datepicker(options);
13911392

13921393
} else if (type=='file') {
1394+
this.maxUploadFileSize = typeof node.attr('maxfilesize') === 'undefined' ? 100 : parseInt(node.attr('maxfilesize'));
13931395
if (this.bootstrap === true) {
1394-
contentcontainer.append('<div id="'+id+'_row" class="form-group'+(className ? ' '+className : '')+'"><label for="'+id+'">'+node.attr('displayname')+(req ? ' <span class="required">*</span>':'')+'</label><input type="hidden" id="'+id+'" value="'+(value || '')+'"/><input type="hidden" id="'+id+'_org" value="'+(value || '')+'"/><div class="fileupload'+(req ? ' required-enabled':'')+'"><form id="form_'+id+'" method="POST" target="uploadframe_'+id+'" enctype="multipart/form-data" action="/jsp/modules/formular/upload.jsp"><input '+(postparam.disabled ? 'disabled':'')+' type="file" name="file_'+id+'" id="file_'+id+'" /><span class="filupload-delete" title="Fjern vedhæftet fil"></span><input type="hidden" name="callbackhandler" value="parent.formular.fileupload"/><input type="hidden" name="id" value="'+id+'"/><input type="hidden" name="sessionid" value="'+this.sessionid+'"/><input type="hidden" name="formular" value="'+this.name+'"/></form><iframe name="uploadframe_'+id+'" id="uploadframe_'+id+'" frameborder="0" style="display:none;"></iframe></div></div>');
1396+
contentcontainer.append('<div id="'+id+'_row" class="form-group'+(className ? ' '+className : '')+'"><label for="'+id+'">'+node.attr('displayname')+(req ? ' <span class="required">*</span>':'')+'</label><input type="hidden" id="'+id+'" value="'+(value || '')+'"/><input type="hidden" id="'+id+'_org" value="'+(value || '')+'"/><div class="fileupload'+(req ? ' required-enabled':'')+'"><form id="form_'+id+'" method="POST" target="uploadframe_'+id+'" enctype="multipart/form-data" action="/jsp/modules/formular/upload.jsp"><input '+(postparam.disabled ? 'disabled':'')+' type="file" name="file_'+id+'" id="file_'+id+'" /><span class="filupload-delete" title="Fjern vedhæftet fil"></span><input type="hidden" name="callbackhandler" value="parent.formular.fileupload"/><input type="hidden" name="id" value="'+id+'"/><input type="hidden" name="sessionid" value="'+this.sessionid+'"/><input type="hidden" name="formular" value="'+this.name+'"/> <input type="hidden" name="maxfilesize" value="'+this.maxUploadFileSize+'"/> </form><iframe name="uploadframe_'+id+'" id="uploadframe_'+id+'" frameborder="0" style="display:none;"></iframe></div></div>');
13951397
contentcontainer.find('#'+id+'_row .filupload-delete').click(SpatialMap.Function.bind(this.deleteFileUpload,this,id)).hide();
13961398
} else {
1397-
contentcontainer.append('<tr id="'+id+'_row"><td><input type="hidden" id="'+id+'" value="'+(value || '')+'"/><input type="hidden" id="'+id+'_org" value="'+(value || '')+'"/><div class="labeldiv'+(className ? ' '+className : '')+'" id="'+id+'_displayname">'+node.attr('displayname')+'</div></td><td><div class="valuediv"><form id="form_'+id+'" method="POST" target="uploadframe_'+id+'" enctype="multipart/form-data" action="/jsp/modules/formular/upload.jsp"><input type="file" name="file_'+id+'" id="file_'+id+'" /><input type="hidden" name="callbackhandler" value="parent.formular.fileupload"/><input type="hidden" name="id" value="'+id+'"/><input type="hidden" name="sessionid" value="'+this.sessionid+'"/><input type="hidden" name="formular" value="'+this.name+'"/></form><iframe name="uploadframe_'+id+'" id="uploadframe_'+id+'" frameborder="0" style="display:none;"></iframe></div></td></tr>');
1399+
contentcontainer.append('<tr id="'+id+'_row"><td><input type="hidden" id="'+id+'" value="'+(value || '')+'"/><input type="hidden" id="'+id+'_org" value="'+(value || '')+'"/><div class="labeldiv'+(className ? ' '+className : '')+'" id="'+id+'_displayname">'+node.attr('displayname')+'</div></td><td><div class="valuediv"><form id="form_'+id+'" method="POST" target="uploadframe_'+id+'" enctype="multipart/form-data" action="/jsp/modules/formular/upload.jsp"><input type="file" name="file_'+id+'" id="file_'+id+'" /><input type="hidden" name="callbackhandler" value="parent.formular.fileupload"/><input type="hidden" name="id" value="'+id+'"/><input type="hidden" name="sessionid" value="'+this.sessionid+'"/><input type="hidden" name="formular" value="'+this.name+'"/> <input type="hidden" name="maxfilesize" value="'+this.maxUploadFileSize+'"/> </form><iframe name="uploadframe_'+id+'" id="uploadframe_'+id+'" frameborder="0" style="display:none;"></iframe></div></td></tr>');
13981400
}
13991401
jQuery('#file_'+id).change (SpatialMap.Function.bind(function (id) {
14001402
this.startFileUpload(id);
@@ -3601,11 +3603,27 @@ Formular = SpatialMap.Class ({
36013603
jQuery('#'+id+'_row .filupload-delete').hide();
36023604
},
36033605

3604-
fileupload: function (filename,id,orgfilename) {
3606+
removeInvalidFileNotice: function (id) {
3607+
jQuery('#'+id+'_invalidfile').remove();
3608+
},
3609+
3610+
fileupload: function (filename,id,orgfilename,filesize) {
36053611
this.endFileUpload();
3606-
jQuery('#'+id).val(filename);
3607-
jQuery('#'+id+'_org').val(orgfilename);
3608-
jQuery('#'+id+'_row .filupload-delete').show();
3612+
this.removeInvalidFileNotice(id);
3613+
if (typeof filesize !== 'undefined' && (parseInt(filesize) <= this.maxUploadFileSize)) {
3614+
jQuery('#'+id).val(filename);
3615+
jQuery('#'+id+'_org').val(orgfilename);
3616+
jQuery('#'+id+'_row .filupload-delete').show();
3617+
} else {
3618+
this.deleteFileUpload(id);
3619+
var inputRow = jQuery('#'+id+'_row');
3620+
var destinationTd = inputRow.children()[1];
3621+
jQuery('<div/>', {
3622+
id: id+'_invalidfile',
3623+
text: 'Filen overskride den maksimale størrelse!'
3624+
}).appendTo(destinationTd)
3625+
3626+
}
36093627
},
36103628

36113629
start: function (options) {
@@ -3848,8 +3866,15 @@ Formular = SpatialMap.Class ({
38483866
}
38493867
}
38503868
}
3851-
}
3869+
},
38523870

3871+
paramHasValue: function (param) {
3872+
var curParam = this.currentParams[param];
3873+
if (typeof curParam !== 'undefined' && curParam != null && curParam.length > 0) {
3874+
return true;
3875+
}
3876+
return false;
3877+
}
38533878
});
38543879

38553880

jsp/upload.jsp

Lines changed: 20 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,8 @@
3030
String callbackID = "";
3131
String formular = "formular";
3232
String orgFileName = "";
33+
double fileSize = -1;
34+
int maxFileSize = 0;
3335
FileItem fileUpload = null;
3436
request.setCharacterEncoding("UTF-8");
3537
ServletRequestContext src = new ServletRequestContext(request);
@@ -80,29 +82,37 @@
8082
sessionID = value;
8183
if (name.equalsIgnoreCase("formular"))
8284
formular = value;
85+
if (name.equalsIgnoreCase("maxfilesize"))
86+
maxFileSize = Integer.parseInt(value);
8387
}
8488
}
8589
}
8690
8791
if(fileUpload != null)
8892
{
89-
Random rand = new Random(System.currentTimeMillis()) ;
90-
long n = Math.abs(rand.nextLong() % 1000000);
91-
orgFileName = uploadedFilename;
92-
filename = formular+"_" + n +"_"+uploadedFilename;
93-
filename = filename.replaceAll(",", "_");
94-
filename = filename.replaceAll(";", "_");
95-
uploadedFilename = tmpDir + File.separator + filename;
96-
File uploadedFile = new File(uploadedFilename);
97-
fileUpload.write(uploadedFile);
93+
//1024*1024 is the size for megbytes
94+
if (fileUpload.getSize() <= (maxFileSize *1024 *1024)) {
95+
Random rand = new Random(System.currentTimeMillis()) ;
96+
long n = Math.abs(rand.nextLong() % 1000000);
97+
orgFileName = uploadedFilename;
98+
filename = formular+"_" + n +"_"+uploadedFilename;
99+
filename = filename.replaceAll(",", "_");
100+
filename = filename.replaceAll(";", "_");
101+
uploadedFilename = tmpDir + File.separator + filename;
102+
File uploadedFile = new File(uploadedFilename);
103+
fileUpload.write(uploadedFile);
104+
fileSize = uploadedFile.length()/(1024*1024);
105+
} else {
106+
fileSize = fileUpload.getSize();
107+
}
98108
}
99109
100110
if (callbackID == null)
101111
callbackID = "fileupload";
102112
if (callbackHandler == null)
103113
callbackHandler = "parent.uploadFilename";
104114
105-
out.println("<body onload=\"" + callbackHandler + "('" + filename.replace('\\', '/') + "','"+callbackID+"','"+orgFileName+"');\">");
115+
out.println("<body onload=\"" + callbackHandler + "('" + filename.replace('\\', '/') + "','"+callbackID+"','"+orgFileName+"','" + fileSize + "');\">");
106116
// out.println("Fil uploadet og skrevet til: " + uploadedFilename);
107117
out.println("</body>");
108118
%>

0 commit comments

Comments
 (0)