NC获取附件上传的文件,并传到客户端
今天写好UPM文件,来测试,又遇到了新的大问题,服务器上获取的文件是有的,但是客户端获取的文件却始终报错,然后继续看代码,最后才想明白,客户端和服务器不是一体的,那肯定不能用File来传,要用数据流。
我的大概实现步骤
(1)用前台模型获取相应AggVO
(2)去查找不同文件的附件
(3)传入主键和附件文件夹名称
(4)查找附件所在的真实保存路径
(5)使用读取服务器文件方法
/**
* 读取服务器文件
*
* @throws IOException
*/
@SuppressWarnings("resource")
@Override
public byte[] getNCHomeFile(String path) throws IOException {
// TODO 自动生成的方法存根
String ncHome = RuntimeEnv.getInstance().getNCHome();
FileInputStream in = new FileInputStream(path);
//转为byte传输
BufferedInputStream bis = new BufferedInputStream(in);
ByteArrayOutputStream bos = new ByteArrayOutputStream();
int date = -1;
while ((date = bis.read()) != -1) {
bos.write(date);
}
byte[] bytes = bos.toByteArray();
return bytes;
}
(6)使用byte数组转换文件方法
/**
* 将Byte数组转换成文件
* @param bytes byte数组
* @param filePath 文件路径
* @param fileName 文件名
*/
public File fileToBytes(byte[] bytes, String filePath, String fileName) {
BufferedOutputStream bos = null;
FileOutputStream fos = null;
File file = null;
try {
file = new File(filePath + fileName);
if (!file.getParentFile().exists()){
//文件夹不存在 生成
file.getParentFile().mkdirs();
}
fos = new FileOutputStream(file);
bos = new BufferedOutputStream(fos);
bos.write(bytes);
} catch (Exception e) {
e.printStackTrace();
} finally {
if (bos != null) {
try {
bos.close();
} catch (IOException e) {
e.printStackTrace();
}
}
if (fos != null) {
try {
fos.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
return file;
}
通过上述步骤和方法便可以实现客户端获取服务器文件,嘿嘿嘿,贴个大概,完整步骤就不会让人开动脑子,有了方法,大家可以自己编写。
参考博客:
https://blog.csdn.net/qq_37729885/article/details/84790906
https://www.cnblogs.com/pxblog/p/14919094.html