(非本人编写)转载:hmy.oschina.net/u/241670/blog/71819
由于工作需要要使文件可直接下载,所以准备将文件存入webContent目录下,以方便访问。
弄了很长的一段时间,终于好了,就记录下来了,以免以后遇到同样的问题。
需要注意的是用这种方法时,如果将项目从服务器上卸下来,webContent里面保存的信息也就丢失了,如果需要长期保存的话可能不太合适。
SERVERPATH 是客户端访问服务端的地址
要获取文件,那么只需输入
SERVERPATH+fileName+ fName就可以了,其中fileName是文件所在的文件夹名,fName是文件名
import java.io.File;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import org.apache.struts2.ServletActionContext;
import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport;
public class FileAction extends ActionSupport {
private static String SERVERPATH = "http://xx.xx.xx.xx:8080/xxxx/";
private static String FILETYPE = "apk";// 文件类型
private Integer versionFirst;// 版本号参数
private Integer versionSecond;// 版本号参数
private Integer versionThird;// 版本号参数
private File file;//文件
public String add() {
String versionNo = versionFirst + "."+ versionSecond + "."+versionThird;
// 新建的文件夹名
ActionContext actionContext = ActionContext.getContext();
//获取request
HttpServletRequest request = (HttpServletRequest) actionContext
.get(ServletActionContext.HTTP_REQUEST);
//获取项目在服务器上的真实目录
String fileName = request.getSession().getServletContext()
.getRealPath("")
+ "\\" + versionNo;
// 创建一个以版本号命名的文件夹
File newFile = new File(fileName);
newFile.mkdirs();
// 提交完整升级文件到服务器上,并同时重命名
if (file != null) {
InputStream is;
OutputStream os;
try {
String fName = fileName + "\\" + versionNo + "." + FILETYPE;
is = new java.io.FileInputStream(file);
os = new java.io.FileOutputStream(fName);
byte buffer[] = new byte[8192];
int count = 0;
while ((count = is.read(buffer)) > 0) {
os.write(buffer, 0, count);
}
os.close();
is.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
} else {
return "ERROR";
}
return "SUCCESS";
}
public Integer getVersionFirst() {
return versionFirst;
}
public void setVersionFirst(Integer versionFirst) {
this.versionFirst = versionFirst;
}
public Integer getVersionSecond() {
return versionSecond;
}
public void setVersionSecond(Integer versionSecond) {
this.versionSecond = versionSecond;
}
public Integer getVersionThird() {
return versionThird;
}
public void setVersionThird(Integer versionThird) {
this.versionThird = versionThird;
}
public File getFile() {
return file;
}
public void setFile(File file) {
this.file = file;
}
}