jsp实现文件上传以及类似百度文库在线阅读
Jsp实现类似百度文库的在线阅读
1.首先下载FlashPaper2 并安装。如果你的系统是win7的话还需要下载一个补丁安装。
关于FlashPaper2 的操作请参考下面的网址。
https://www.360docs.net/doc/cc8065342.html,/view/7575c9114431b90d6c85c775.html
2.配置struts2的环境.将下面的架包拷贝到项目中。
3.编写上传文件界面。代码如下:
<%@ page language="java" contentType="text/html; charset=utf-8"
pageEncoding="utf-8"%>
<%@ taglib prefix="s" uri="/struts-tags"%>
enctype="multipart/form-data">
4.编写上后后跳转的页面。
<%@ page language="java" contentType="text/html; charset=utf-8"
pageEncoding="utf-8"%>
<%@ taglib prefix="s" uri="/struts-tags"%>
5.编写Action类。
package zzuli.bysj.wh.action;
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.Date;
import https://www.360docs.net/doc/cc8065342.html,m.util.FlashPaper;
import com.opensymphony.xwork2.ActionSupport;
public class FileUploadAction extends ActionSupport {
p rivate static final long serialVersionUID = 572146812454l ;
p rivate static final int BUFFER_SIZE = 15728640 ;
p rivate File file;
p rivate String fileContentType;
p rivate String fileFileName;
p rivate boolean flag;
p ublic boolean isFlag() {
return flag;
}
p ublic void setFlag(boolean flag) {
this.flag = flag;
}
p ublic String getFileFileName() {
return fileFileName;
}
p ublic void setFileFileName(String fileFileName) {
this.fileFileName = fileFileName;
}
p rivate String imageFileName;
p rivate String name;
p ublic File getFile() {
return file;
}
p ublic void setFile(File file) {
this.file = file;
}
p ublic String getImageFileName() {
return imageFileName;
}
p ublic void setImageFileName(String imageFileName) { this.imageFileName = imageFileName;
}
p ublic String getName() {
return name;
}
p ublic void setName(String name) {
https://www.360docs.net/doc/cc8065342.html, = name;
}
p ublic String getFileContentType() {
return fileContentType;
}
p ublic void setFileContentType(String fileContentType) { if(fileContentType.contains("msword")){
this.fileContentType = ".doc";
}else if(fileContentType.contains("excel")){
this.fileContentType = ".xls";
}else if(fileContentType.contains("pdf")){
this.fileContentType = ".pdf";
}else if(fileContentType.contains("powerpoint")){ this.fileContentType = ".ppt";
}else{
this.fileContentType = ".doc";
}
}
p rivate static void copyFile(File src,File dir){ try{
InputStream input = null;
OutputStream output = null;
try{
input = new BufferedInputStream(new
FileInputStream(src),BUFFER_SIZE);
output = new BufferedOutputStream(new
FileOutputStream(dir),BUFFER_SIZE);
byte [] buffer = new byte [BUFFER_SIZE];
while(input.read(buffer)>0){
output.write(buffer);
}
}catch(Exception e){
e.printStackTrace();
}finally{
if(null != input){
input.close();
}
if(null !=output ){
output.close();
}
}
}catch(Exception e){
e.printStackTrace();
}
}
p ublic String execute(){
imageFileName = String.valueOf(new Date().getTime())+name;
// File dirFile = new
File(ServletActionContext.getServletContext().getRealPath("/UploadImages")
+"/"+imageFileName);
File dirFile = new
File("C:\\struts\\document\\"+imageFileName+this.getFileContentType());
copyFile(file,dirFile);
int fileSize = 0;
try {
fileSize = new FileInputStream(file).available()/1024;
} catch (Exception e) {
e.printStackTrace();
}
flag =
FlashPaper.converter(imageFileName,imageFileName+this.getFileContentType()
,fileSize);
System.out.println("%%%%%%%%%%%%%%%%%"+flag);
return "suc";
}
}
6.编写转换方法:
package https://www.360docs.net/doc/cc8065342.html,m.util;
public class FlashPaper extends Thread {
public static void main(String args[]){
converter("1301291936853trhkt","1301291936853trhkt.pdf",100);
}
public static boolean converter(String swfName,String documentName,int fileSize){
int sleeptime = 0;
boolean st_return = true;
Runtime pro = Runtime.getRuntime();
try {
String converter="C:\\Program Files\\Macromedia\\FlashPaper 2\\FlashPrinter.exe -o C:\\struts\\swf\\"+swfName+".swf
C:\\struts\\document\\"+documentName;
pro.exec(converter);
Thread.sleep(sleeptime);
} catch (Exception e) {
System.out.println("执行失败");
e.printStackTrace();
}
return st_return;
}
}
7.编写配置文件:
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"https://www.360docs.net/doc/cc8065342.html,/dtds/struts-2.0.dtd">
8.
application/msword,application/vnd.ms-excel,application/pdf,application/vnd.ms-powerpoint
15728640
注意:
上传的文件不要太大,因为后台处理的时间较长,而页面跳转的时间比较短,如果文件太大的话后台没有处理完就已经跳转,在预览的时候找不到相应的文件。
运行结果: