两种方式:linux下(通过samba或者fuse)挂载共享文件夹;使用JCIFS。
- Java访问共享文件夹实现
package com.xnh.atom.server;
import java.io.ByteArrayInputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.xnh.atom.server.base.AppHelper;
public class FileServiceServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
final long MAX_SIZE = 100 * 1024 * 1024;
@Override
public void init(ServletConfig config) throws ServletException {
super.init(config);
}
public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {}
private String getContentType(String fileName) {
String lowerfileName = fileName.toLowerCase();
if(lowerfileName.endsWith(".jpg")) {
return "image/jpg";
} else if(lowerfileName.endsWith(".jpeg")) {
return "image/jpeg";
} else if(lowerfileName.endsWith(".gif")) {
return "image/gif";
} else if(lowerfileName.endsWith(".png")) {
return "image/png";
} else {
return "image/png";
}
}
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
FileInputStream in = null;
try {
if(WebSecurity.getWebSecurity(request)==null) response.sendRedirect(request.getContextPath() + "/login.jsp");
Integer fileSize = 5000000;
String fileName = request.getParameter("fileName");
String contentType = getContentType(fileName);
String openType = "inline";
String agent = request.getHeader("USER-AGENT");
String downLoadName = null;
if (null != agent && -1 != agent.indexOf("MSIE")) { //IE
downLoadName = java.net.URLEncoder.encode(fileName, "UTF-8");
} else if (null != agent && -1 != agent.indexOf("Mozilla")) { //Firefox
downLoadName = new String(fileName.getBytes("UTF-8"),"iso-8859-1");
} else {
downLoadName = java.net.URLEncoder.encode(fileName, "UTF-8");
}
response.reset();
response.setContentType(contentType + "; charset=UTF-8");
response.addHeader("Content-Disposition", openType + "; filename=" + downLoadName);
File d = new File(fileName);
response.addHeader("Content-Length", "" + fileSize);
if (d.exists()){
in = new FileInputStream(fileName);
byte[] buf = new byte[1024];
int len = 0;
ServletOutputStream out = response.getOutputStream();
while ((len = in.read(buf)) > 0) out.write(buf, 0, len);
buf = null;
out.flush();
out.close();
}
} catch (Exception e) {
} finally{
if (in != null) {
try {
in.close();
} catch (IOException eb) {
eb.printStackTrace();
}
in = null;
}
}
}
}
//windows访问页面
http://127.0.0.1:8888/FileServiceServlet?fileName=\\192.438.0.23\%E5%92%8C%E7%BE%8E%E7%B2%BE%E8%89%BA%E9%9B%86%E5%9B%A2\Defect%20Photo\AOI%20Defect%20Photo\SumUnitsMapImgs\016fs22016ba0\GTL\230918003-0-23-02\0000199B3.jpeg
//linux访问页面,通过挂载的文件夹目录去访问windows共享文件夹
http://127.0.0.1:8888/FileServiceServlet?fileName=/data/emapping70.30files/目录省略/0000199B3.jpeg
挂载目录对应关系
![在这里插入图片描述](https://img-blog.csdnimg.cn/f2552506c2d94d35bd9662224c9fa84e.png
//JCIFS提供 SmbFile并提供 listFiles()允许类似的东西
SmbFile[] files = new SmbFile("smb://192.438.0.23/E-Mapping").listFiles();