محسن نوری اردستانی | Mohsen Noori Ardestani
محسن نوری اردستانی | Mohsen Noori Ardestani
خواندن ۱ دقیقه·۲ سال پیش

تبدیل []byte به MultipartFile بدون ساخت فایل فیزیکی روی سرور

تبدیل byteArray# به MultipartFile# بدون ایجاد فایل فیزیکی روی سرور ، با استفاده از #TempFile و MockMultipartFile# :


بعضی اوقات پیش میاد که شما از سرور بیرونی مثلا FileStorage فایلی را به صورت []byte دریافت می کنید و می خواهید آن را به صورت back-to-back به سرویس دیگری که ورودی فایل MultipartFile میگیرد ،بفرستید.


شما در اینجا دوتا تبدیل باید انجام بدین:

1) تبدیل byteArray به file

2) تبدیل file به multipartFile


شما در متود اول میتونید با استفاده از ()File.createTempFile ورودی []byte را گرفته و روی ram یک فایل موقت بسازید.


private static File byteArrayToFile(byte[] byteArray) {

if (null == byteArray) {

throw new BusinessException(500, "byteArrayToFile.input is null");

}

File tempFile = null;

try {

tempFile = File.createTempFile("prefix", ".pdf", null);

} catch (Exception exception) {

throw new BusinessException(500, "byte[] to file has error");

}

try (FileOutputStream fos = new FileOutputStream(tempFile)) {

fos.write(byteArray);

} catch (Exception e) {

throw new BusinessException(500, "generate file has error");

}

return tempFile;

}




سپس با استفاده از کلاس های MockMultipartFile# ورودی File را به MultipartFile تبدیل کند.

private static MultipartFile fileToMultipartFile(File file) {

if (null == file) {

throw new BusinessException(500, "file is null");

}

MultipartFile multipartFile2;

try {

FileInputStream input = new FileInputStream(file);

multipartFile2 = new MockMultipartFile("file",

file.getName(), "application/pdf", IOUtils.toByteArray(input));

} catch (Exception e) {

throw new BusinessException(500, "convert file to multipartfile file has error");

}

return multipartFile2;

}



برای استفاده از کلاس های MockMultipartFile لازمه که کتابخانه ی زیر را به پروژه اضافه کنید:

<dependency>

<groupId>org.springframework</groupId>

<artifactId>spring-test</artifactId>

</dependency>




به امید روزهای خوب برای ایران قشنگمون ...

javaspringobject oriented programminglinux
برنامه نویس سمت وب و موبایل - علاقه مند به پژوهش
شاید از این پست‌ها خوشتان بیاید