为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

至尊宝的传说 2023-09-13 15:40:01
我有一个 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();
查看完整描述

1 回答

?
拉莫斯之舞

TA贡献1820条经验 获得超10个赞

我通过将输入流转换为字节数组解决了这个问题。我将 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();

    ...

}


查看完整回答
反对 回复 2023-09-13
  • 1 回答
  • 0 关注
  • 106 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信