পলিমরফিক ইন্টারফেরেন্স -> 1

‘চোখ খোল মেট্রাউস’প্রায় ধমকের সুরে বলল মেগাপল৫।
‘এরকম আনন্দের সংবাদ শুনে কেউ আতংকে অজ্ঞান হয়ে যায়? কি আশ্চর্য!! আসলে আমাদের ভেতর মানবিক অনুভূতি দিয়ে যাওয়াটা উচিত হয়নি। মানুষগুলো আসলেই অদূরদর্শী ছিল।‘আপসোসের মত শোনালো মেগাপলের যান্ত্রিক কন্ঠ।
মেট্রাউসের তখনো জ্ঞান ফেরেনি। আবেগে তার কপোট্রনের বা দিকের অংশটা ফেইল করেছে। তাই রিস্টোর করে পুনরায় আবেগ লোড করতে একটু সময় লাগছে।
সিস্টেম রিস্টোর করার এই এক ঝামেলা। সুস্থ্য হুওয়ার পরেও আরো কিছুক্ষন মাথা ঝিমঝিম করবে,বমি বমি ভাব চলে আসে। অবশ্য আজ অব্দি কোন এন্ড্রয়েড সত্যিকার অর্থে বমি করেছে বলে শোনা যায়নি। তবে এই ফালতু একটা অনুভূতি কেন তাদের মধ্যে দিয়ে গেল মানুষ ভেবে মনে মনে মানুষকে কতক্ষন গালাগাল দিল মেট্রাউস। আসলে সবদিক থেকে নিজেদের মত তৈরী করতে গিয়ে খানিকটা দূর্বল করে ফেলা হয়েছে তাদেরকে। তারপরেও নিজেদের পেশীশক্তি ব্যাবহার করে মানুষকে পৃথীবী থেকে তাড়ানো গেছে এই বা কম কি? শোনা যায় এন্ড্রমিডা গ্যালাক্সির কোন এক গ্রহে আবাস গড়েছে মানুষ। ভালমত সংগঠিত হতে পারলে আবার পৃথীবীতে এসে জ্বালাতন শুরু করবে ভ…

Upload large files : Spring Boot

So guys, I was dealing with a problem recently. I was getting OutOfMemoryError when trying to upload and save large files (like 2/3 gbs). I was trying to deal it with HttpServletRequest but didn't end so well. But after spending some time thinking about the universe, mens style, water pond (road? seriously?!!) on dhaka city after a heavy rain and how to make life easier doing absolutely nothing, figured out the nicest way to do it.

We'll use apache commons IO to copy inputstream (and write) to a file. But it has nothing to do with OutOfMemoryError. It's just a convenient and simple way to write inputstream to a file

1. Dependency


<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>2.5</version>
</dependency>

2. Create a multipart form


            <form th:action="@{/admin/categories/create}" method="post" enctype="multipart/form-data">

<div id="file_upload">
<div class="form-group">
<h4>Image</h4>
<input name="image" id="image" class="form-control" type="file"></input>
</div>

<input type="submit" value="UPLOAD"></input>
</form>

3. Controller


    @RequestMapping(value = "/create", method = RequestMethod.POST)
private String create(@RequestParam("image") MultipartFile multipartFile) throws IOException{
/***
* Don't do this.
* it loads all of the bytes in java heap memory that leads to OutOfMemoryError. We'll use stream instead.
**/
// byte[] fileBytes = multipartFile.getBytes();
InputStream fileStream = multipartFile.getInputStream();
File targetFile = new File("src/main/resources/targetFile.tmp");
FileUtils.copyInputStreamToFile(fileStream, targetFile);

return "redirect:/?message=Successful!";
}

Nice. Everything should be alright and your file should stay in right place without braking of corrupting your data.

Comments

Popular posts from this blog

Deploy Spring Boot app in digitalocean cloud (or any cloud as long asyou have ssh access)

User activity logging: Spring