当前位置: 代码迷 >> Java Web开发 >> 关于文件的上传与读取,该怎么解决
  详细解决方案

关于文件的上传与读取,该怎么解决

热度:131   发布时间:2016-04-16 21:42:30.0
关于文件的上传与读取
现在有这样的需求,项目和tomcat假如在D盘下,
而现在需要上传文件,指定上传路径为常量路径E:\\upload\(windows 下)【当部署到服务器Linux上时,设置这个常量为   /opt/upload/】.--->即上传的文件目录和项目工程是分开的。
那么现在有以下问题:
1:这种设置常量的思维是否正确,项目中是否就是这么处理的呢?
2:当上传的时候可以把文件上传到设置的常量路径里面,但是客户端怎么才能读取到服务器里面【/opt/upload/】下对应的文件并且显示呢?
比如图片。
希望有哪位大拿能帮忙一下,感激不尽!最好是能有代码,谢谢!
------解决思路----------------------
1:这种设置常量的思维是否正确,项目中是否就是这么处理的呢?
可以这么处理,上传的附件,诸如图片一般都是另辟空间存储的
2:当上传的时候可以把文件上传到设置的常量路径里面,但是客户端怎么才能读取到服务器里面【/opt/upload/】下对应的文件并且显示呢?
文件上传到指定的目录后,将目录名称和文件名存储在数据库中,读取时,按照数据库的目录和文件名来读取附件,然后通过输出流的方式给到前台就可以了
------解决思路----------------------
1.可以设置常量,不过更加合理的我觉得应该是做成一个配置项,这样方便日后维护。
2.将路径存在数据库中,读取时通过访问后台代码,根据路径获取到硬盘上的文件,然后通过输出流返回给前端
------解决思路----------------------
输入输出流,   数据库保存的是路径  通过路径获取文件
------解决思路----------------------
这是之前我写的一个app客户端接口,用于上传图片,供参考
MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request;
// 上传路劲,获取项目存放绝对地址
String uploadPath = request.getSession().getServletContext()
.getRealPath("/")
+ "upload/image/";
// 获取上传的图片
MultipartFile areaPicture = multipartRequest.getFile("picture");
if (!areaPicture.isEmpty()) {
fileName = areaPicture.getOriginalFilename();//获取图片名,可保存到数据库中
byte[] fileData = areaPicture.getBytes();
String filePathStr = uploadPath + fileName;//保存地址
IoUtil.TurnFile(fileData, filePathStr);//保存图片方法
}


public class IoUtil {

public static  boolean TurnFile(byte[] fileData, String path) {
try {

for (int i = 0; i < fileData.length; ++i) {
if (fileData[i] < 0) {// 调整异常数据
fileData[i] += 256;
}
}
// 生成jpeg图片
OutputStream out = new FileOutputStream(path);
out.write(fileData);
out.flush();
out.close();
return true;
} catch (Exception e) {
e.printStackTrace();
return false;
}

}


图片可以通过链接获取
  相关解决方案