package com.fgkj.actions;
|
|
import java.io.File;
|
import java.io.FileInputStream;
|
import java.io.FileNotFoundException;
|
import java.io.FileOutputStream;
|
import java.io.IOException;
|
import java.util.ArrayList;
|
import java.util.List;
|
|
import javax.servlet.http.HttpServletResponse;
|
|
import com.fgkj.dto.BattInf;
|
import com.fgkj.dto.MyFile;
|
import com.fgkj.dto.ServiceModel;
|
import com.google.gson.Gson;
|
|
public class MyFileAction extends ActionUtil{
|
|
private String result;
|
private String json;
|
private String battname;
|
private File[] file;
|
// 提交过来的file的名字
|
private String[] fileFileName;
|
// 提交过来的file的MIME类型
|
private String[] fileContentType;
|
|
private String filestr; //文件内容
|
private String fname; //文件内容
|
|
//上传文件
|
public String UploadTestFile(){
|
HttpServletResponse res = ActionUtil.getResponse();
|
res.setHeader("Access-Control-Allow-Origin", "*"); //允许跨域访问
|
res.setHeader("Access-Control-Allow-Headers", "X-Requested-With,content-type,token");
|
res.setHeader("Access-Control-Allow-Methods", "GET, HEAD, POST, PUT, DELETE, TRACE, OPTIONS, PATCH");
|
|
|
boolean f = createFile();
|
ServiceModel model = new ServiceModel();
|
if(f){
|
model.setCode(1);
|
model.setMsg("上传成功");
|
}else{
|
model.setCode(0);
|
model.setMsg("上传失败");
|
}
|
result = ActionUtil.tojson(model);
|
return SUCCESS;
|
}
|
|
public boolean createFile(){
|
String loadpath = ActionUtil.getSession().getServletContext().getRealPath("/");
|
String str = new File(loadpath).getParentFile().getAbsolutePath();
|
boolean flag = false;
|
String root = str+"/uploadfiles/"; // 上传路径
|
//System.out.println(battname+"***");
|
for(int i=0;i<file.length;i++){
|
String savepath=root+battname+"/"+fileFileName[i];
|
//System.out.println(savepath);
|
FileInputStream fis=null;
|
FileOutputStream fos=null;
|
try {
|
File f = new File(savepath);
|
if(!f.exists()){
|
if(!f.getParentFile().exists()){
|
f.getParentFile().mkdirs();
|
}
|
f.createNewFile();
|
}
|
/** 创建输入流 */
|
fis = new FileInputStream(file[i]);
|
/** 输出流 根据文件的路径+文件名称创建文件对象 */
|
fos = new FileOutputStream(f);
|
/** 读取字节 */
|
byte b[] = new byte[1024];
|
int n = 0;
|
/** 读取操作 */
|
while ((n = fis.read(b)) != -1) {
|
/** 写操作 */
|
fos.write(b, 0, n);
|
}
|
fos.flush();
|
flag = true;
|
} catch (Exception e) {
|
e.printStackTrace();
|
} finally{
|
/** 关闭操作 */
|
try {
|
if (fis != null) {
|
fis.close();
|
}
|
if (fos != null) {
|
fos.close();
|
}
|
} catch (IOException e) {
|
e.printStackTrace();
|
}
|
}
|
}
|
return flag;
|
}
|
|
public String UploadIphoneFile(){
|
HttpServletResponse res = ActionUtil.getResponse();
|
res.setHeader("Access-Control-Allow-Origin", "*"); //允许跨域访问
|
res.setHeader("Access-Control-Allow-Headers", "X-Requested-With,content-type,token");
|
res.setHeader("Access-Control-Allow-Methods", "GET, HEAD, POST, PUT, DELETE, TRACE, OPTIONS, PATCH");
|
Gson gson = new Gson();
|
int[] arr = gson.fromJson(filestr, int[].class);
|
|
System.out.println("文件名"+fname);
|
System.out.println("文件内容:"+filestr);
|
System.out.println("电池组名称"+battname);
|
boolean f = createFileByarr(arr,fname,battname);
|
|
ServiceModel model = new ServiceModel();
|
if(f){
|
model.setCode(1);
|
model.setMsg("上传成功");
|
}else{
|
model.setCode(0);
|
model.setMsg("上传失败");
|
}
|
result = ActionUtil.tojson(model);
|
return SUCCESS;
|
}
|
|
/**
|
*
|
* @param arr 文件的字节数组
|
* @param fname 文件名
|
* @param bname 电池组名称
|
* @return 是否生成文件成功
|
*/
|
public boolean createFileByarr(int[] arr,String fname,String bname){
|
String loadpath = ActionUtil.getSession().getServletContext().getRealPath("/");
|
String str = new File(loadpath).getParentFile().getAbsolutePath();
|
boolean flag = false;
|
String root = str+"/uploadfiles/"; // 上传路径
|
//System.out.println(battname+"***");
|
String savepath=root+bname+"/"+fname;
|
//System.out.println(savepath);
|
FileOutputStream fos=null;
|
byte[] bytes = new byte[arr.length];
|
for(int i=0;i<arr.length;i++){
|
bytes[i] = (byte)(arr[i] & 0xFF);
|
}
|
|
try {
|
File f = new File(savepath);
|
if(!f.exists()){
|
if(!f.getParentFile().exists()){
|
f.getParentFile().mkdirs();
|
}
|
f.createNewFile();
|
}
|
fos = new FileOutputStream(savepath);
|
fos.write(bytes);
|
fos.flush();
|
flag = true;
|
} catch (Exception e) {
|
e.printStackTrace();
|
} finally{
|
/** 关闭操作 */
|
try {
|
if (fos != null) {
|
fos.close();
|
}
|
} catch (IOException e) {
|
e.printStackTrace();
|
}
|
}
|
return flag;
|
}
|
|
//上传机房视频接口
|
public String uploadStationFile(){
|
BattInf binf = getGson().fromJson(json, BattInf.class);
|
String fileRoot = "stationsrc";
|
ServiceModel model = new ServiceModel();
|
boolean isSuccess = false;
|
String loadpath = ActionUtil.getSession().getServletContext().getRealPath("/");
|
String str = new File(loadpath).getParentFile().getAbsolutePath(); //获取服务器所在的绝对路径
|
String root = str+"/"+fileRoot+"/"+binf.getStationId()+"/video/"; // 上传路径
|
for(int i=0;i<file.length && binf != null;i++){
|
String filePath = root+fileFileName[i];
|
createFilefolderIFNotExist(filePath);
|
copyFile(file[i], filePath);
|
isSuccess = true;
|
}
|
if(isSuccess){
|
model.setCode(1);
|
model.setMsg("上传成功");
|
}else{
|
model.setCode(0);
|
model.setMsg("上传失败");
|
}
|
result = tojson(model);
|
return SUCCESS;
|
}
|
|
/**
|
*
|
* 获取指定机房得资源
|
*/
|
public String searchStationSource(){
|
String fileRoot = "stationsrc"; //存放机房资源文件的文件夹
|
BattInf binf = getGson().fromJson(json, BattInf.class);
|
ServiceModel model = new ServiceModel();
|
String loadpath = ActionUtil.getSession().getServletContext().getRealPath("/");
|
String str = new File(loadpath).getParentFile().getAbsolutePath();
|
if(binf != null && binf.getStationId() != null && binf.getStationName() != null){
|
String filesource = str+File.separator+fileRoot+File.separator+binf.getStationId()+File.separator+binf.getStationName()+File.separator; //当前请求的机房所在的资源文件夹
|
//System.out.println(filesource);
|
File source = new File(filesource);
|
File[] files = source.listFiles();
|
model.setMsg("暂无视频文件");
|
if(files!=null && files.length>0){
|
List myfiles = new ArrayList<MyFile>();
|
for(int i=0;i<files.length;i++){
|
MyFile myfile = new MyFile();
|
if(files[i].isFile()){
|
myfile.setFile(files[i]);
|
myfiles.add(myfile);
|
}
|
}
|
if(myfiles.size() > 0){
|
model.setCode(1);
|
model.setData(myfiles);
|
model.setMsg("读取成功");
|
}
|
}
|
|
}
|
result = tojson(model);
|
return SUCCESS;
|
}
|
|
//将文件复制到指定的目录
|
public static void copyFile(File oldFile, String newPath){
|
File file = new File(newPath);
|
FileInputStream in = null;
|
FileOutputStream out = null;
|
try {
|
in = new FileInputStream(oldFile);
|
out = new FileOutputStream(file);;
|
|
byte[] buffer=new byte[2097152];
|
int readByte = 0;
|
while((readByte = in.read(buffer)) != -1){
|
out.write(buffer, 0, readByte);
|
}
|
} catch (FileNotFoundException e) {
|
e.printStackTrace();
|
} catch (IOException e) {
|
e.printStackTrace();
|
} finally {
|
if(in != null){
|
try {
|
in.close();
|
} catch (IOException e) {
|
e.printStackTrace();
|
}
|
}
|
if(out != null){
|
try {
|
out.close();
|
} catch (IOException e) {
|
e.printStackTrace();
|
}
|
}
|
}
|
}
|
|
|
|
public void setFilestr(String filestr) {
|
this.filestr = filestr;
|
}
|
|
public void setFname(String fname) {
|
this.fname = fname;
|
}
|
|
public void setFile(File[] file) {
|
this.file = file;
|
}
|
|
public void setFileFileName(String[] fileFileName) {
|
this.fileFileName = fileFileName;
|
}
|
|
|
public void setFileContentType(String[] fileContentType) {
|
this.fileContentType = fileContentType;
|
}
|
|
public String getResult() {
|
return result;
|
}
|
|
public void setBattname(String battname) {
|
this.battname = battname;
|
}
|
|
|
|
public void setJson(String json) {
|
this.json = json;
|
}
|
|
public static void main(String[] args) {
|
String filePath = "D:/test/a/a.txt";
|
//ActionUtil.createFileRootIFNotExist(filePath);
|
|
File file = new File(filePath);
|
System.out.println(ActionUtil.tojson(file));
|
|
}
|
}
|