October 03, 2009

Easy file upload in Java using Jersey and Uploadify

Uploading a bunch of files to your server. I have come across this particular requirement a few times now during my web development career, but only recently did I discover a very easy way to implement it. And by easy I mean easy on both the client side and the server side.

Server

On the server side we develop our web applications in Java using Glassfish for our deployement server. You can have your standard Servlet class that catches your requests, but recently we bumped into Jersey. And I must say, I really love it. Here is for example the code to accept a file upload request.

@Path("/file")
public class FileHandler {
@POST
@Path("/upload")
@Consumes("multipart/form-data")
@Produces("text/plain")
public String uploadFile(@FormParam("file") File file, @FormParam("file") FormDataContentDisposition fcdsFile) {
String fileLocation = "/files/" + fcdsFile.getFileName();
File destFile = new File(fileLocation);

// your code here to copy file to destFile

return "1";
}
}

That's it. The FormDataContentDisposition is a recent addition to Jersey which allows you to retrieve the name of the file that is being uploaded.

Client

For the client side, I decided to make use of Uploadify. They basically provided a wrapper around SWFUpload using JQuery. Here is the code I used on the client side:

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>SimpleFileUpload</title>
<script type="text/javascript" src="js/swfobject.js"></script>
<script type="text/javascript" src="js/jquery-1.3.2.min.js"></script>
<script type="text/javascript" src="js/jquery.uploadify.v2.1.0.min.js"></script>
<link rel="stylesheet" href="css/uploadify.css" type="text/css" media="screen"/>

<script type="text/javascript">
$(function() {
$('#file_upload').uploadify({
'uploader' : 'swf/uploadify.swf',
'script' : 'rest/file/upload',
'fileDataName' : 'file',
'cancelImg' : 'img/cancel.png',
'multi' : true
});
});
</script>
</head>
<body>
<h1>Simple File Upload</h1>

<h3>Multiple file upload made easy</h3>

<div id="file_upload"></div>
<br/>
<input type="button" value="Clear Queue" onclick="$('#file_upload').uploadifyClearQueue();"/>
<input type="button" value="Submit Queue" onclick="$('#file_upload').uploadifyUpload();"/>
</body>
</html>

Voila, now you have a simple web application that is able to upload files to your server. You can download a sample application here.

113 comments:

armyofda12mnkeys said...

Curious would this work with a multi-file upload with Uploadify?
Been looking for some easy-to-implement solutions.

Unknown said...

Yes, if you take a look at the code for the client side, you can see that I already used "multi: true". Uploadify will call the method in the FileHandler for each file you upload.

Radhika Bhagavathula said...

I am having problems in using Uploadify to upload files larger than 100MB as per my requirement.
Can I use Jersey for that as I am currently using apache commons fileupload which breaks for large files. also I am not able to download jersey. is there no download access right now? Can I have the software downloaded from a different location? Any help is appreciated.

Unknown said...

Hello Radhika. At the moment it is better to use FormDataParam instead of FormParam when parsing multipart data. And the jersey software should still be available from the same location: Jersey v1.4.

rqualis said...

I think you are missing the web.xml sevlet definition...correct? I didn't see how the client will know what backend java app to call, so I added the servlet def to the web.xml and then the following error came back:
javax.servlet.ServletException: Servlet class: 'com.my.test.FileUploaderJersey' does not implement javax.servlet.Servlet
Maybe I am missing something, but would you know why I got that error based on the info I provided above. Note, in your client, you stated that 'rest/file/upload' is the script uploadify is to use. How do you tie that to the back end?

Unknown said...

The FileHandler class is not a Servlet, it is actually just a class capable of handling REST calls. The actual endpoint is still a servlet of course, but this servlet is provided by Jersey. If you download my sample application (at the end of the post), you can find the web.xml. In there you will see that the ServletAdaptor is configured to listen to all calls to /rest/*. There is also an init parameter that specifies the package in which Jersey will look for classes that are annotated with @Path.

Anonymous said...

I tried the example you posted but it did not work. It does not trigger the annotated Java app, I have the web.xml same as your example. Basically, nothing happens on the backend. I commented out everything and just have a print statement to show that the uploadFile method was called, an I only get back "HTTP Error: 404" -- http://en.wikipedia.org/wiki/HTTP_404. I noticed in your example you did not have a button to select the files. Were you able to test this example?

rqualis said...

By the way, the last post is by me. I did see you web.xml file, but still not able to get ti working.

Unknown said...

- downloaded the sample project
- unzipped it
- opened the project with Netbeans 6.9.1
- resolved a reference problem to the jersey-bundle.jar using jersey-bundle-1.1.5.1.jar
- built the application
- deployed in glassfish: asadmin deploy dist/SimpleFileUpload.war
- pointed browser (firefox) to http://localhost:8080/SimpleFileUpload which showed the following page: screenshot

In other words, for me it worked. Maybe you deploy your the war in a different application server than glassfish?

Anonymous said...

I did it as your steps, and no error report, but nothing happen.it seems that the path 'rest/file/upload' do not work.
I just type some code like System.out.println("......called") in the method uploadNewFile(,), but when I run the code, submit, no strings in the console.
So... thanks in advance!

rqualis said...

Yes I used WebLogic. I like the Jersey technology, but had to do it another way. You Blog was still a good one and thanks for sharing.

Craig Ringer said...

Beware: This example doesn't work well with multi-file uploads if you want to actually submit a form after the uploads are completed. Because Uploadify's uploadifyUpload() method is asynchronous, the form tends to submit before the uploads complete.

More importantly, with Jersey 1.5 there's a new method for handling uploads that lets you accept a stream directly. Here's an example handler class, though it'll be nigh-unreadable because of the horrid comment formatting in Blogger, so I'll reproduce it and some more info here:

http://soapyfrogs.blogspot.com/2011/02/handling-file-uploads-with-java-ee-6.html

@Path("/file")
public class FileHandler {

@POST
@Path("/upload")
@Consumes("multipart/form-data")
@Produces("text/plain")
public String uploadFile(
@FormDataParam("file") InputStream file,
@FormDataParam("file") FormDataContentDisposition fileInfo) {

// your code here to copy file to destFile
System.err.println("Received file: " + fileInfo.getFileName() + " as " + file);

return "1";
}

}

Anonymous said...

Is possible to use JSF context (FacesContext) in Jersey context ? i have tried, but is null. Any idea ? Because i must get a bean from JSF context

Craig Ringer said...

"Anonymous": AFAIK, JAX-RS/Jersey doesn't offer any direct access to the JSF context. However, if you're using CDI/Weld then JAX-RS beans share the same session scope, etc, and you can inject JSF beans into a JAX-RS resource class easily.

Alternately, you could store your bean references as session properties on the HttpSession, which you can access via the HttpServletRequest in both JAX-RS and in JSF. In JSF, get it via FacesContext.getExternalContext().In JAX-RS, add a new method parameter to your REST methods: "@Context HttpServletRequest request".

Gee, wouldn't it be nice to have some interface consistency in the Java world! CDI is helping a bit, and Seam Solder should make some more difference once it's stable and supported on all application servers, but for now we get to learn different ways to do different things in different parts of the Java EE stack.

Wright Petter said...

Hi, Great.. Tutorial is just awesome..It is really helpful for a newbie like me.
I am a regular follower of your blog. Really very informative post you shared here. Kindly keep blogging.
If anyone wants to become a Java developer learn from Java EE Online Training from India.
or learn thru Java EE Online Training from India .
Nowadays Java has tons of job opportunities on various vertical industry.

priya said...


Thank you for benefiting from time to focus on this kind of, I feel firmly about it and also really like comprehending far more with this particular subject matter. In case doable, when you get know-how, is it possible to thoughts modernizing your site together with far more details? It’s extremely useful to me.
Data Science Training in Indira nagar
Data Science Training in btm layout
Data Science Training in Kalyan nagar
Data Science training in Indira nagar
Data Science Training in Marathahalli
Data science training in bangalore

Soumitasai said...

Nice Article… I love to read your articles because your writing style is too good, its is very very helpful for all of us and I never get bored while reading your article because, they are becomes a more and more interesting from the starting lines until the end.

Check out : big data training in velachery
big data hadoop training cost in chennai
big data training in chennai omr
big data training in chennai velachery

IT Tutorials said...

Really useful information. Thank you so much for sharing.It will help everyone.Keep Post. RPA training in chennai | RPA training in Chennai with placement | UiPath training in Chennai | UiPath certification in Chennai with cost

Gowri said...

Really Happy to say your post is very interesting. Keep sharing your information regularly for my future reference. Thanks Again.

Check Out:
big data training in chennai chennai tamil nadu
big data training in velachery
big data hadoop training in velachery

Diya shree said...

Good job and thanks for sharing such a good blog You’re doing a great job. Keep it up !!

PMP Certification Fees | Best PMP Training in Chennai |
pmp certification cost in chennai | PMP Certification Training Institutes in Velachery |
pmp certification courses and books | PMP Certification requirements |
PMP Training Centers in Chennai | PMP Certification Requirements | PMP Interview Questions and Answers

Jagadeesh said...

Thanks for sharing info about Java.
Learn Digital Academy offers, Digital marketing courses in Bangalore.
In-class training program, practically on Live Projects.

Kayal said...

Nice post! I love this blog and I got more kinds of techniques in this topic. Thanks for your sharing.

Primavera Training in Chennai
Primavera Course in Chennai
Pega Training in Chennai
Unix Training in Chennai
Tableau Training in Chennai
Power BI Training in Chennai
Excel Training in Chennai
Oracle Training in Chennai
Social Media Marketing Courses in Chennai

kavithasathish said...

A good blog for the people who really needs information about this.
Good work keep it up.
TOEFL Coaching in Chennai
TOEFL Classes in Chennai
German Language Classes in Chennai
IELTS Training in Chennai
Japanese Language Course in Chennai
spanish language course in chennai
TOEFL Coaching in Porur
TOEFL Coaching in Adyar

Gowri said...

Thanks for sharing such a Wonderful blog. This is such a exact information i am been searching for. Keep post

Check Out:
react js tutorial
it courses in chennai
react js classes near me

Gowri said...


Thanks for sharing such a Wonderful blog. This is such a exact information i am been searching for. Keep post

Check Out:
Selenium course fees in chennai
Best Selenium training in chennai
Selenium training courses in chennai

IT Tutorials said...



Get the most advanced AWS Course by Professional expert. Just attend a FREE Demo session.
For further details call us @ 9884412301 | 9600112302
AWS training in chennai | AWS training in velachery

Tech Guy said...

For Data Science training in Bangalore, Visit:
Data Science training in Bangalore

Anonymous said...

For Data Science training in Bangalore, Visit:
Data Science training in Bangalore

Lovable vicky said...


Nice information, want to know about Selenium Training In Chennai
Selenium Training In Chennai
Data Science Training In Chennai
Protractor Training in Chennai
jmeter training in chennai
Rpa Training Chennai
Rpa Course Chennai
Selenium Training institute In Chennai
Python Training In Chennai

Lovable vicky said...


Rpa Training in Chennai
Rpa Course in Chennai
Blue prism training in Chennai

Data Science Training In Chennai
Data Science Course In Chennai
Data Science Course In Chennai

Rajesh said...

Nice infromation
Selenium Training In Chennai
Selenium course in chennai
Selenium Training
Selenium Training institute In Chennai
Best Selenium Training in chennai
Selenium Training In Chennai

Rajesh said...

Rpa Training in Chennai
Rpa Course in Chennai
Rpa training institute in Chennai
Best Rpa Course in Chennai
uipath Training in Chennai
Blue prism training in Chennai

Data Science Training In Chennai
Data Science Course In Chennai
Data Science Training institute In Chennai
Best Data Science Training In Chennai


Python Training In Chennai
Python course In Chennai
Protractor Training in Chennai
jmeter training in chennai
Loadrunner training in chennai

vijay said...

Thanks for your valuable post... The data which you have shared is more informative for us...
aws Training in Bangalore
python Training in Bangalore
hadoop Training in Bangalore
angular js Training in Bangalore
bigdata analytics Training in Bangalore

Durai Moorthy said...

Nice blog, thanks for sharing. Please Update more blog about this, this is really informative for me as well
aws Training in Bangalore
python Training in Bangalore
hadoop Training in Bangalore
angular js Training in Bangalore
bigdata analytics Training in Bangalore
python Training in Bangalore
aws Training in Bangalore

python training in vijayawada said...

We as a team of real-time industrial experience with a lot of knowledge in developing applications in python programming (7+ years) will ensure that we will deliver our best in python training in vijayawada. , and we believe that no one matches us in this context.

GlobalEmployees said...

Find my blog post here
web designer
salesforce developer
laravel developer
web developer

Rajesh Anbu said...

Very Nice Blog. Thanks for sharing such a nice Blog.
aws Training in Bangalore
python Training in Bangalore
hadoop Training in Bangalore
angular js Training in Bangalore
bigdata analytics Training in Bangalore
python Training in Bangalore
aws Training in Bangalore


sociogramics said...

You are so cool! I don't think I've truly read through anything like that before. So wonderful to find someone with a few genuine thoughts on this topic. Seriously.. thank you for starting this up. This site is one thing that is required on the internet, someone with a little originality!
Tech info

offpageseo70 said...

Nice blog,I understood the topic very clearly,And want to study more like this.
Data Scientist Course

kimi jhaveri said...

Hi, your article was of great help. I loved the way you shared the information, thanks.
Amazing article, I highly appreciate your efforts, it was highly helpful. Thank you CEH Training ,CEH Certification, CEH Online Course, Ethicalhacking

Unknown said...

Hi this is the nice blog, thanks for sharing us
Get Azure, azure training,azure certification,microsoft azure training,azure course,azure online training

Unknown said...

Hi, This is a great article. Loved your efforts on it buddy. Thanks for sharing this with us.
Get cissp
it training courses.
CISSP training ,cissp exam cost, CISSP certification. .Get VMware, vmware training.,vmware course., vmware online training., vmware interview questions and answers.,vmware Certification. .AWS, aws training,aws course,aws certification training,aws online training
Get PMP pmp certification, pmp training,pmp certification in gurgaon,pmp certification cost,pmp training certification

Mr Frudo said...

read at hercampus also Click Here

ravali said...

This is a wonderful article, Given so much info in it, These type of articles keeps the users interest in the website, and keep on sharing more ... good luck.

data science course

CloudLearn ERP said...

You have written a very informative article with great quality content and well laid out points. I agree with you on many of your views and you've got me thinking.
Best Data Science training in Mumbai

Data Science training in Mumbai


akshaya said...

I can feel the great dedication in you when I read this post. I wonder how a writer could be more diligent in creating each and every word of the blog. Web Designing Course Training in Chennai | Web Designing Course Training in annanagar | Web Designing Course Training in omr | Web Designing Course Training in porur | Web Designing Course Training in tambaram | Web Designing Course Training in velachery

BestTrainingKolkata said...

I have to agree with the valid points you make in your article because I see things like you. Additionally, your content is interesting and really good reading material. Thank you for sharing your talent.
SAP training in Kolkata
Best SAP training in Kolkata
SAP training institute in Kolkata

BestTrainingMumbai said...

This material makes for great reading. It's full of useful information that's interesting,well-presented and easy to understand. I like articles that are well done.
SAP training in Mumbai
Best SAP training in Mumbai
SAP training institute Mumbai

nisha said...

Nice Blog. the blog is really very Impressive.

Data Science Training Course In Chennai | Data Science Training Course In Anna Nagar | Data Science Training Course In OMR | Data Science Training Course In Porur | Data Science Training Course In Tambaram | Data Science Training Course In Velachery



Anirban Ghosh said...

I like your article Your take on this topic is well-written and original. I would never have thought of this.
SAP training in Kolkata
SAP training Kolkata
Best SAP training in Kolkata
SAP course in Kolkata
SAP training institute Kolkata


pratheep said...

Excellent Blog!!! Such an interesting blog with clear vision, this will definitely help for beginner to make them update.

Robotic Process Automation (RPA) Training in Chennai | Robotic Process Automation (RPA) Training in anna nagar | Robotic Process Automation (RPA) Training in omr | Robotic Process Automation (RPA) Training in porur | Robotic Process Automation (RPA) Training in tambaram | Robotic Process Automation (RPA) Training in velachery

Training for IT and Software Courses said...

Wow it is really wonderful and awesome thus it is very much useful for me to understand many concepts and helped me a lot.

oracle certification Online Training in bangalore

oracle certification courses in bangalore

oracle certification classes in bangalore

oracle certification Online Training institute in bangalore

oracle certification course syllabus

best oracle certification Online Training

oracle certification Online Training centers

Training for IT and Software Courses said...

I recently came across your article and have been reading along. I want to express my admiration of your writing skill and ability to make readers read from the beginning to the end. I would like to read newer posts and to share my thoughts with you.

Blue Prism training in bangalore

Blue Prism class in bangalore

learn Blue Prism in bangalore

places to learn Blue Prism in bangalore

Blue Prism schools in bangalore

Blue Prism reviews in bangalore

Blue Prism training reviews in bangalore

Blue Prism training in bangalore

Blue Prism institutes in bangalore

Blue Prism trainers in bangalore

learning Blue Prism in bangalore

where to learn Blue Prism in bangalore

best places to learn Blue Prism in bangalore

top places to learn Blue Prism in bangalore

Blue Prism training in bangalore india

Training for IT and Software Courses said...

Such a very useful article. Very interesting to read this article.I would like to thank you for the efforts you had made for writing this awesome article.

WebSphere MQ Online Training

WebSphere MQ Classes Online

WebSphere MQ Training Online

Online WebSphere MQ Course

WebSphere MQ Course Online

Training for IT and Software Courses said...

Very interesting blog Thank you for sharing such a nice and interesting blog and really very helpful article.

Machine Learning Online Training

Machine Learning Classes Online

Machine Learning Training Online

Online Machine Learning Course

Machine Learning Course Online

Ishu Sathya said...

Read your blog, Excellent content written on "Easy file upload in Java using Jersey and Uploadify"
If you are looking for RPA related job with unexpected Pay, then visit below link

RPA Training in Chennai
RPA course in Chennai
RPA course
RPA Training in Velachery
RPA Training
Robotic Process Automation Training
Robotic Process Automation Training in Chennai
Robotic Process Automation Courses
RPA Classes in Chennai
Robotic Process Automation Certification

nisharoshan said...

Really it as an awesome article...very interesting to read..You have provided an nice article....Thanks for sharing.

Web Designing Training Course in Chennai | Certification | Online Training Course | Web Designing Training Course in Bangalore | Certification | Online Training Course | Web Designing Training Course in Hyderabad | Certification | Online Training Course | Web Designing Training Course in Coimbatore | Certification | Online Training Course | Web Designing Training Course in Online | Certification | Online Training Course

priyash said...

Very interesting to read this article.I would like to thank you for the efforts you had made for writing this awesome article. This article inspired me to read more. keep it up.
Correlation vs Covariance
Simple linear regression
data science interview questions

Jayalakshmi said...

Thanks for your informative article, Your post helped me to understand the future and career prospects & Keep on updating your blog with such awesome article.
oracle training in chennai

oracle training in tambaram

oracle dba training in chennai

oracle dba training in tambaram

ccna training in chennai

ccna training in tambaram

seo training in chennai

seo training in tambaram

praveen said...

Hi nice blog with new information,
Thanks to share with us and keep more updates,

web designing training in chennai

web designing training in porur

digital marketing training in chennai

digital marketing training in porur

rpa training in chennai

rpa training in porur

tally training in chennai

tally training in porur


EXCELR said...

Thanks for sharing nice information data science training Hyderabad

Anonymous said...

Thank you for sharing this very useful
Data science Training in bangalore
Aws Training In Bangalore
Hadoop Training In Bangalore
Devops Training In Bangalore
Iot Training in Bangalore

jeni said...


Thank you so much for sharing these amazing tips. I must say you are an incredible writer, I love the way that you describe the things. Please keep sharing. sap training in chennai

sap training in velachery

azure training in chennai

azure training in velachery

cyber security course in chennai

cyber security course in velachery

ethical hacking course in chennai

ethical hacking course in velachery

shiny said...

Thanks for this incredible idea to our computer knowledge.

data science training in chennai

data science training in annanagar

android training in chennai

android training in annanagar

devops training in chennai

devops training in annanagar

artificial intelligence training in chennai

artificial intelligence training in annanagar

Arpita Raj said...

Highly valuable information,looking for more update like this.
Dot Net Training in Chennai
.net coaching centre in Chennai
.Net Training in Chennai
Dot Net Training Online
Dot Net Online course
Dot Net Certification course
Dot Net Training in Velachery

Anonymous said...

Very nice blog, Thank you for providing good information.
python training in bangalore | python online Training
artificial intelligence training in bangalore | artificial intelligence online training
machine learning training in bangalore | machine learning online training
uipath-training-in-bangalore | uipath online training
blockchain training in bangalore | blockchain online training
aws training in Bangalore | aws online training
data science training in bangalore | data science online training

renju raj said...

Informative content,thanks for sharing...waiting for next update.

ibm training in chennai

ibm course in chennai
aix training in chennai
ibm course
ibm training
inplant course in chennai
plc training institute in chennai

Anonymous said...

Thanks for provide great informatic and looking beautiful blog
python training in bangalore | python online Training
artificial intelligence training in bangalore | artificial intelligence online training
machine learning training in bangalore | machine learning online training
uipath-training-in-bangalore | uipath online training
blockchain training in bangalore | blockchain online training
aws training in Bangalore | aws online training
data science training in bangalore | data science online training

vivekvedha said...

Thanks for your valuable post... The data which you have shared is more informative for us...
acte chennai

acte complaints

acte reviews

acte trainer complaints

acte trainer reviews

acte velachery reviews complaints

acte tambaram reviews complaints

acte anna nagar reviews complaints

acte porur reviews complaints

acte omr reviews complaints


hrithiksai said...

Very nice blogs!!! i have to learning for lot of information for this sites…Sharing for wonderful information.Thanks for sharing this valuable information to our vision. You have posted a trust worthy blog keep sharing, data science course

Mohd Sharique said...

Excellent and very cool idea and great content of different kinds of the valuable information's.

Python Training In Pune
python training institute in pune

prathyusha said...

Incredibly all around intriguing post. I was searching for such a data and completely appreciated inspecting this one. Continue posting. A commitment of gratefulness is all together for sharing.data science course in Hyderabad

meritstep Technology said...

Thanks for Sharing This Article.It is very so much valuable content. I hope these Commenting lists will help to my website
best blockchain online training

arshiya said...

Great information, nice to read your blog. Keep updating.
keyword stuffing seo
how to make career in artificial intelligence
angular js plugins
what is rpa technology
rpa applications
angularjs interview questions and answers

Python said...

Thanks for sharing an information to us.
Data Science Online Training

Technogeekscs said...

I really happy found this website eventually. Really informative and inoperative, Thanks for the post and effort! Please keep sharing more such blog.
Data Science
Selenium
ETL Testing
AWS
Python Online Classes

Devi said...

I am glad to see your article. Very interesting to read your article.
benefits of artificial intelligence
.net core features
about hadoop
what are the devops tools
selenium interview questions and answers pdf download

jhansi said...

Tally Solutions Pvt. Ltd., is an Indian multinational company that provides enterprise resource planning software. It is headquartered in Bengaluru, Karnataka India.
tally training in chennai

hadoop training in chennai

sap training in chennai

oracle training in chennai

angular js training in chennai

Python said...

Thank you for sharing.
Data Science Online Training
Python Online Training
Salesforce Online Training

siva said...

This article is very interesting to read, it shares useful information for the learners.
web development vs android development
selenium features
best language in the world
ethical hacker
devops interview questions and answers
rpa interview questions

Selenium Training in Pune said...

That's really impressive and helpful information you have given, very valuable content.
We are also into education and you also can take advantage really awesome job oriented courses

Flora said...

Very informative blog. In this blog, I got so much useful information.
software testing career growth
software testing scope
top languages to learn
use of php in web development
digital marketing interview questions and answers for experienced
hadoop developer interview questions and answers for experienced

Mallela said...

Thanks for posting the best information and the blog is very informative.Data science course in Faridabad

data scientist london said...

Fantastic blog extremely good well enjoyed with the incredible informative content which surely activates the learners to gain the enough knowledge. Which in turn makes the readers to explore themselves and involve deeply in to the subject. Wish you to dispatch the similar content successively in future as well.

Data Science Course in Raipur

Mallela said...

Thanks for posting the best information and the blog is very helpful.data science interview questions and answers

Aishwariya said...

Nice work keep it up thanks for sharing the knowledge.Thanks for sharing this type of information, it is so useful. Primavera Training in Chennai | Primavera online course

Michael L Catudal said...

บาคาร่า
คาสิโนออนไลน์
ufabet
ufa
เว็บบอล

Michael L Catudal said...

เว็บแทงบอล
ufabet
ufa
พวงหรีด
โควิด

James Yadiel Jose said...

Movie-watching websites that are more than movie-watching websites Because we are the number 1 free movie site in Thailand for a long time, including new movies, Thai movies, Western movies, Asian movies, we have all kinds of ways for you Including new series Full of all stories without interstitial ads to keep annoying anymore. One place sa-movie.com.

Android and IOS operating systems. Watch online movies, Thai movies, Western movies, Asian movies, Cartoon movies, Netflix Movie, Action Movies, Comedy Movies, Crime Movies, Drama Movies, Horror Movies, Adventure Movies, Crash Movies and still have many new movies to watch. You can watch for free anytime, anywhere 24 hours a day at see4k.com.


GangManga read manga, read manga, read manga online for free, fast loading, clear images in HD quality, all titles, anywhere, anytime, on mobile, tablet, computer. Android and IOS operating systems. Read top comics, action dramas, comedy, adventure, horror and manga. New coming every day to watch many more. Can be read for free anytime anywhere 24 hours a day at gangmanga.com..

It is no secret that football is among the most popular and widely watched sports. Everybody who likes football tries to find the best platform for free soccer streaming. So, what are the best free sports streaming sites? We are going to answer this question. On this page, you can find a detailed overview of the most widespread soccer streaming websites. Keep on reading and make the best choice for you live24th.me.

aishu said...

I read your article it is very interesting and every concept is very clear, thank you so much for sharing. AWS Certification Course in Chennai

data analytics courses in bangalore with placement - 360DigiTMG said...

Highly appreciable regarding the uniqueness of the content. This perhaps makes the readers feels excited to get stick to the subject. Certainly, the learners would thank the blogger to come up with the innovative content which keeps the readers to be up to date to stand by the competition. Once again nice blog keep it up and keep sharing the content as always.

data analytics courses in bangalore with placement

salome said...

interesting to read
best-angular-training in chennai |

Maneesha said...

These thoughts just blew my mind. I am glad you have posted this.
data scientist training and placement

Best IAS Coaching In India said...

This article will outline all the different strategies you should be aware of when it comes to soccer.

Best IAS Coaching in India

Nearlearn said...

very very informative post for me thanks for sharing

BlockchaincClassroom Training Course in Bangalore

Deekshitha said...

Informative blog
data analytics courses in hyderabad

Maneesha said...

Wonderful blog post. This is absolute magic from you! I have never seen a more wonderful post than this one. You've really made my day today with this. I hope you keep this up!
data scientist training and placement in hyderabad

UFABET1688 said...

Hi! I just want to offer you a huge thumbs up for the great info you have got here on this post. I will be returning to your site for more soon. ยูฟ่าสล็อต

Mallela said...

Thanks for posting the best information and the blog is very important.data science institutes in hyderabad

SBPwindows said...

Your article is good to understand, are you interested in doors and windows? Our service is helpful to you.
Modern aluminium doors in chennai
Best Aluminium Windows in Chennai
upvc ventilator window in Chennai

Mallela said...

Thanks for posting the best information and the blog is very important.digital marketing institute in hyderabad

data science said...

I was just examining through the web looking for certain information and ran over your blog.It shows how well you understand this subject. Bookmarked this page, will return for extra. data science course in vadodara

Escorts in Noida said...

Escort Service In Gurgaon - Our call girls agency is ready to meet your all needs. They are enjoying most seductive female call Girls from different parts of the World. Have you ever date any female in your life? If no then you do not know the real taste of dating fun with a call girl. Then our Gurgaon Escorts service will help you to tackle your dreams with one of the independent female escort agencies.

Escort Service In Gurgaon
https://www.kajalvermas.com/escort-service-in-gurgaon/

Bhuvana said...

Very wonderful informative article. I appreciated looking at your article. Very wonderful reveal. I would like to twit this on my followers. Many thanks! .

AWS Training in Hyderabad

data scientist course said...

Really nice and interesting post. I was looking for this kind of information and enjoyed reading this one.
data scientist training and placement

Data Science Course in Varanasi - 360DigiTMG said...

Tremendous blog quite easy to grasp the subject since the content is very simple to understand. Obviously, this helps the participants to engage themselves in to the subject without much difficulty. Hope you further educate the readers in the same manner and keep sharing the content as always you do.

data science course in faridabad

vivikhapnoi said...

Keep up the good work , I read few posts on this web site and I conceive that your blog is very interesting
Vé máy bay Vietnam Airline tu Ha Lan ve Viet Nam

Ve may bay Bamboo tu New Zealand ve Viet Nam

combo trọn gói khách ly khách sạn 14 ngày Hà Nội

dịch vụ xe đưa đón sân bay

xin visa kết hôn Hàn Quốc

phỏng vấn xin visa kết hôn Nhật Bản

cloud computing course in bangalore said...

Extremely overall quite fascinating post. I was searching for this sort of data and delighted in perusing this one. Continue posting. A debt of gratitude is in order for sharing. python course in delhi

Data Science Course in Varanasi - 360DigiTMG said...

Thanks for bringing such innovative content which truly attracts the readers towards you. Certainly, your blog competes with your co-bloggers to come up with the newly updated info. Finally, kudos to you.

Data Science Course in Varanasi

Rashi Singh said...

If you want to spend a beautiful time in Uttar Pradesh with the company of hot girls then the Uttar Pradesh Escorts is the best place for you. The agency is very much reputed and has all the facilities to give you all the pleasure you want. So quickly avail of our services and have a time that you will never forget.
Aligarh Escort Service
Bareilly Call Girls
Jhansi Call Girl
Call Girls In Kanpur
Call Girl In Lucknow

dataanalytics said...

It is perfect time to make some plans for the future and it is time to be happy. I've read this post and if I could I desire to suggest you some interesting things or suggestions. Perhaps you could write next articles referring to this article. I want to read more things about it!
data scientist training and placement

dataanalytics said...

This is my first time visiting here. I found so much entertaining stuff in your blog, especially its discussion. From the tons of comments on your articles, I guess I am not the only one having all the leisure here! Keep up the good work. I have been meaning to write something like this on my website and you have given me an idea.
data scientist training in hyderabad

Data Science Course in Varanasi - 360DigiTMG said...

I was actually browsing the internet for certain information, accidentally came across your blog found it to be very impressive. I am elated to go with the information you have provided on this blog, eventually, it helps the readers whoever goes through this blog. Hoping you continue the spirit to inspire the readers and amaze them with your fabulous content.

Data Science Course in Faridabad