⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 fileuploadlistener.java

📁 非常有影响的 j道 论 坛 源码 国外很有明的专家编写的 ....对java爱好者很有参考价值
💻 JAVA
字号:
/*
 * Copyright 2007 the original author or jdon.com
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 *
 */
package com.jdon.jivejdon.presentation.servlet.upload;

import javax.servlet.http.HttpServletRequest;

import com.jdon.jivejdon.presentation.servlet.upload.strutsplugin.OutputStreamListener;
public class FileUploadListener implements OutputStreamListener{
	private FileUploadStats fileUploadStats = new FileUploadStats();

	public FileUploadListener(long totalSize) {
		fileUploadStats.setTotalSize(totalSize);
	}

	public void start() {
		fileUploadStats.setCurrentStatus(FileUploadStatus.START);
	}

	public void bytesRead(int byteCount) {
		fileUploadStats.incrementBytesRead(byteCount);
		fileUploadStats.setCurrentStatus(FileUploadStatus.READING);
	}

	public void error(String s) {
		fileUploadStats.setCurrentStatus(FileUploadStatus.ERROR);
	}
	
	public static void error(HttpServletRequest request){
		FileUploadStats stats = new FileUploadListener.FileUploadStats();
        stats.setCurrentStatus(FileUploadStatus.ERROR);
        request.getSession().setAttribute("FILE_UPLOAD_STATS", stats);
	}

	public void done() {
		fileUploadStats.setBytesRead(fileUploadStats.getTotalSize());
		fileUploadStats.setCurrentStatus(FileUploadStatus.DONE);
	}

	public FileUploadStats getFileUploadStats() {
		return fileUploadStats;
	}

	public static class FileUploadStats {

		private long totalSize = 0;

		private long bytesRead = 0;

		private double percentComplete = 0.0;

		private long startTime = System.currentTimeMillis();

		private FileUploadStatus currentStatus = FileUploadStatus.NONE;

		public long getTotalSize() {
			return totalSize;
		}

		public void setTotalSize(long totalSize) {
			this.totalSize = totalSize;
		}

		public long getBytesRead() {
			return bytesRead;
		}

		public long getElapsedTimeInMilliseconds() {
			return (System.currentTimeMillis() - startTime);
		}

		public FileUploadStatus getCurrentStatus() {
			return currentStatus;
		}

		public double getPercentComplete() {
			if (totalSize != 0) {
				percentComplete = (double) bytesRead / (double) totalSize;
			}
			return percentComplete;
		}

		public void setCurrentStatus(FileUploadStatus currentStatus) {
			this.currentStatus = currentStatus;
		}

		public void setBytesRead(long bytesRead) {
			this.bytesRead = bytesRead;
		}

		public void incrementBytesRead(int byteCount) {
			this.bytesRead += byteCount;
		}
	}

	enum FileUploadStatus {
		START("start"), NONE("none"), READING("reading"), ERROR("error"), DONE("done");

		private String type;

		FileUploadStatus(String type) {
			this.type = type;
		}

		public String getType() {
			return type;
		}
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -