java - 如何在Java Rest API中获取InputStream文件的真实路径

标签 java rest inputstream fileinputstream bufferedinputstream

我有一个 Java Rest API Post 方法,它发送图像 (InputStream) 作为参数,并且我必须将其保存在 Oracle 中的 blob 列中。

我需要获取此InputStream的完整路径(真实路径)以将此图像保存在数据库中。 我的代码如下。

@POST
@Path("/upload")
@Consumes(MediaType.MULTIPART_FORM_DATA)
public Response uploadFile(
                @FormDataParam("file") InputStream uploadedInputStream,
                @FormDataParam("file") FormDataContentDisposition fileDetail) {
String UPLOAD_FOLDER = "c:/uploadedFiles/"; // my rest api does not have this file, how to get at runtime?    
String uploadedFileLocation = UPLOAD_FOLDER + fileDetail.getFileName(); // this line is ok

我想做这样的事情:

String UPLOAD_FOLDER = uploadedInputStream.getRealPathName();

String UPLOAD_FOLDER = fileDetail.getRealPathName();

最佳答案

我通过将输入流转换为字节数组解决了这个问题。我将 byte[] 转发给数据库持久化方法。我的代码如下:

public byte[] toByteArray(InputStream is) throws IOException{
    ByteArrayOutputStream baus = new ByteArrayOutputStream();
    byte[] buffer = new byte[1024];
    int len;
    while((len= is.read(buffer)) != -1){
        baus.write(buffer, 0, len);
    }
    return baus.toByteArray();
}

@POST
@Path("/upload")
@Consumes(MediaType.MULTIPART_FORM_DATA)
public Response uploadFile(
                @FormDataParam("file") InputStream uploadedInputStream,
                @FormDataParam("file") FormDataContentDisposition fileDetail) {
    ...
    byte[] b = toByteArray(uploadedInputStream);
    business.saveUploadedFileInDatabase(b);
    ...
}

public boolean uploadFile(byte[] b) throws SQLException, IOException{
    ...
    PreparedStatement ps = conn.prepareStatement("INSERT INTO TABLE_IMAGE_TEST (CODE, IMAGE) VALUES (?, ?)");
    pstmt.setLong(1, 1L);
    pstmt.setBytes(2, b);
    pstmt.execute();
    ...
}

关于java - 如何在Java Rest API中获取InputStream文件的真实路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58170204/

相关文章:

android - 通过 RESTful API 正确使用 Android 服务

java - DataInputStream.read 返回小于 len

java - 使用 getClassLoader() 解析 .properties 文件

java - 尝试在每次点击时显示颜色名称检查我的代码

java - Spring MVC 在 Controller 之间传递相同的对象

java - REST API 后端的 Web 应用程序身份验证

java - 在哪些方法调用 java 后向服务器发送真实请求?

java - Java 8 日期时间 API (java.time) 和 Joda-Time 之间的差异

java - 学生/研究生项目中的经理类(class)问题

python - 如何通过 Office 365 REST API 检索 Internet(消息) header ?