【发布时间】:2014-09-12 23:40:34
【问题描述】:
目前我正在从浏览器上传一张图片。现在在后端有 java 代码,我正在检索这些图片并转换为字节数组并存储到数据库中,这部分工作实际上很好
代码如下:
String fromLocal = "D:/123.jpg";
File file = new File(fromLocal);
InputStream inputStream = null;
byte[] bFile= null;
byte[] imageData = null;
try {
inputStream = new BufferedInputStream(new FileInputStream(file));
ByteArrayOutputStream baos = new ByteArrayOutputStream(8192);
bFile = new byte[8192];
int count;
while((count = inputStream.read(bFile))> 0){
baos.write(bFile, 0, count);
}
bFile = baos.toByteArray();
if(bFile.length > 0){
imageData = bFile;
}
baos.flush();
inputStream.close();
} catch (Exception ioe) {
//throw ioe;
}
问题是每当我尝试硬编码图像路径(如这里的 D:/123.jpg)时,它都可以正常工作。现在它的用户依赖和客户端依赖他可以从任何驱动器和任何目录加载图像。我没有使用 servlet 的特权。 我的查询是:
1.现在,如果我尝试从浏览器上传来自 D:/123.jpg 的相同图像,我只会得到 123.jpg 而不是像 D:/123.jpg 这样的绝对路径。因为现在同样无法处理图像。
2.如何知道用户尝试上传图像的特定路径。(假设用户从 C:/images/123.jpg 上传图像),那么如何获取这个绝对路径。
我已尽力详细说明我的问题,如果有不清楚的地方请告诉我,我会尝试以其他方式解释。
【问题讨论】:
-
你在寻找 Java 中的 getAbsolutePath() 方法吗
-
用户在哪里上传文件?上传意味着您正在使用一个网站,但您说“我没有使用 servlet 的特权”。您的软件在哪里运行?
-
关于问题 2,我很确定现在大多数浏览器出于安全原因不会发布文件的完整路径。
-
@George 他们从来没有这样做过。它始终只是文件名。文件在用户机器上的位置与网站没有任何关系。
标签: java image file fileinputstream absolute-path