diff --git a/src/zutil/jee/upload/AjaxFileUpload.java b/src/zutil/jee/upload/AjaxFileUpload.java index cfba814..e3dcd9e 100644 --- a/src/zutil/jee/upload/AjaxFileUpload.java +++ b/src/zutil/jee/upload/AjaxFileUpload.java @@ -134,16 +134,8 @@ public abstract class AjaxFileUpload extends HttpServlet { it.remove(); } } - - JSONNode node = new JSONNode( JSONType.Map ); - node.add("id", listener.getID()); - node.add("filename", listener.getFilename()); - node.add("percent", listener.getPercentComplete()); - node.add("uploaded", StringUtil.formatBytesToString( listener.getBytesRead() )); - node.add("total", StringUtil.formatBytesToString( listener.getContentLength() )); - node.add("speed", StringUtil.formatBytesToString( listener.getSpeed() )+"/s"); - node.add("status", listener.getStatus().toString()); - root.add(node); + + root.add( listener.getJSON() ); } // Write to the user @@ -214,6 +206,8 @@ public abstract class AjaxFileUpload extends HttpServlet { } catch (Exception e) { e.printStackTrace(); listener.setStatus(Status.Error); + listener.setFileName(""); + listener.setMessage( e.getMessage() ); } } diff --git a/src/zutil/jee/upload/AjaxFileUpload.js b/src/zutil/jee/upload/AjaxFileUpload.js index 46c89e9..a451b2e 100644 --- a/src/zutil/jee/upload/AjaxFileUpload.js +++ b/src/zutil/jee/upload/AjaxFileUpload.js @@ -67,19 +67,21 @@ function updateUploadStatus(){ $("#UploadQueue").append("
  • {PROGHTML}
  • "); } // Update data + if(jQuery("#UploadQueue #"+item.id+" .status").size() > 0) + jQuery("#UploadQueue #"+item.id+" .status").html( item.status ); + if(jQuery("#UploadQueue #"+item.id+" .message").size() > 0) + jQuery("#UploadQueue #"+item.id+" .message").html( item.message ); if(jQuery("#UploadQueue #"+item.id+" .filename").size() > 0) jQuery("#UploadQueue #"+item.id+" .filename").html( item.filename ); if(jQuery("#UploadQueue #"+item.id+" .progress").size() > 0) jQuery("#UploadQueue #"+item.id+" .progress").animate({width: item.percent+"%"}, 'slow'); - //jQuery("#UploadQueue #"+item.id+" #progress").css("width", item.percent+"%"); + if(jQuery("#UploadQueue #"+item.id+" .total").size() > 0) jQuery("#UploadQueue #"+item.id+" .total").html( item.total ); if(jQuery("#UploadQueue #"+item.id+" .uploaded").size() > 0) jQuery("#UploadQueue #"+item.id+" .uploaded").html( item.uploaded ); if(jQuery("#UploadQueue #"+item.id+" .speed").size() > 0) jQuery("#UploadQueue #"+item.id+" .speed").html( item.speed ); - if(jQuery("#UploadQueue #"+item.id+" .status").size() > 0) - jQuery("#UploadQueue #"+item.id+" .status").html( item.status ); // remove li when done if( item.status == "Done" ){ diff --git a/src/zutil/jee/upload/FileUploadListener.java b/src/zutil/jee/upload/FileUploadListener.java index 415bd02..7ddce87 100644 --- a/src/zutil/jee/upload/FileUploadListener.java +++ b/src/zutil/jee/upload/FileUploadListener.java @@ -2,6 +2,10 @@ package zutil.jee.upload; import org.apache.commons.fileupload.ProgressListener; +import zutil.StringUtil; +import zutil.parser.json.JSONNode; +import zutil.parser.json.JSONNode.JSONType; + /** * This is a File Upload Listener that is used by Apache @@ -19,11 +23,12 @@ public class FileUploadListener implements ProgressListener{ } private String id; + private volatile Status status; private volatile String filename; + private volatile String message; private volatile long bytes = 0l; private volatile long length = 0l; private volatile int item = 0; - private volatile Status status; private volatile long time; // Speed @@ -56,12 +61,14 @@ public class FileUploadListener implements ProgressListener{ protected void setFileName(String filename){ this.filename = filename; - item++; } protected void setStatus(Status status){ this.status = status; time = System.currentTimeMillis(); } + protected void setMessage(String msg){ + this.message = msg; + } public String getID(){ @@ -92,6 +99,10 @@ public class FileUploadListener implements ProgressListener{ return time; } + protected String getMessage(){ + return message; + } + /** * @return bytes per second */ @@ -107,4 +118,19 @@ public class FileUploadListener implements ProgressListener{ return 0; return (int)((100 * bytes) / length); } + + public JSONNode getJSON() { + JSONNode node = new JSONNode( JSONType.Map ); + node.add("id", id); + + node.add("status", status.toString()); + node.add("message", message); + node.add("filename", filename); + node.add("percent", getPercentComplete()); + + node.add("uploaded", StringUtil.formatBytesToString( bytes )); + node.add("total", StringUtil.formatBytesToString( length )); + node.add("speed", StringUtil.formatBytesToString( speed )+"/s"); + return node; + } } \ No newline at end of file