转:http://blog.csdn.net/caizhh2009/article/details/7012956
利用resteasy框架构建rest webservice----第三波:实现文件上传---非form提交方式(实例、教程)
分类: webservice web restful java resteasy 2011-11-25 18:00 1159人阅读 评论(8) 收藏 举报
因为工作原因,很久时间木有更新了,不怕有时间久继续更新:
基本的resteasy的搭建详情请看第一、二波,我这里指的上传是指利用resteasy来获取:客户端HTTP开发包发送的body请求-----刚开始也没撒头绪,第一时间去google,发现有哥们问同样的问题,但是却没有解决方法,于是乎就只有硬着头皮看英文文档,发现如下文档:
The @Context annotation allows you to inject instances of javax.ws.rs.core.HttpHeaders, javax.ws.rs.core.UriInfo, javax.ws.rs.core.Request, javax.servlet.HttpServletRequest, javax.servlet.HttpServletResponse, javax.servlet.ServletConfig, javax.servlet.ServletContext, and javax.ws.rs.core.SecurityContext objects.
翻译下呢就是说使用@Context 注解就可以将 javax.ws.rs.core.HttpHeaders, javax.ws.rs.core.UriInfo, javax.ws.rs.core.Request, javax.servlet.HttpServletRequest, javax.servlet.HttpServletResponse, javax.servlet.ServletConfig, javax.servlet.ServletContext, and javax.ws.rs.core.SecurityContext等等实例注入到变量中
server端resource类代码如下:
[html] view plaincopy
@PUT
@Path(value = "/{folder}/{fileName}")
public Response uploadFile(@PathParam("folder") String folder,@PathParam("fileName") String fileName, @Context HttpServletRequest request)
{
File f = new File("x:\\"+fileName);
InputStream is = null;
try {
is = request.getInputStream();
FileUtils.copyInputStreamToFile(is, f);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return Response.ok().build();
}
请主要看下以上代码红色部分,就相当于把HttpServletRequest请求注入到了request变量中,那么通过request对象获取获取输入流,则得到了body主体部分的数据。
客户端的代码如下
[html] view plaincopy
String urlResouce = "http://localhost:8080/cloud-storeage-boss/muluSDF/xyz.png"; // create URL
File localFile = new File("C:\\Users\\maomao\\Pictures\\2.png");
try{
HttpURLConnection urlConnection =
(HttpURLConnection) (new URL(urlResouce)).openConnection();
urlConnection.setDoInput(true);
urlConnection.setDoOutput(true);
urlConnection.setRequestMethod("PUT");
OutputStream urlOutputStream = urlConnection.getOutputStream();
FileInputStream fileInputStream = new FileInputStream(localFile);
IOUtils.copy(fileInputStream, urlOutputStream);
fileInputStream.close();
urlOutputStream.close();
System.out.println(urlConnection.getResponseCode());
}
catch(Exception e)
{
e.printStackTrace();
}
通过此客户端的调用,就可以将本地的2.png文件上传到服务器,并被保存为xyz.png.
上传就是如此的简单,如果大家有兴趣,下一波会讲讲form方式的提交上传或者下载文件
分享到:
相关推荐
总的来说,Delphi 7 使用 Indy 10 的 `TIdHTTP` 控件和 `TIdMultipartFormDataStream` 类可以方便地实现 `multipart/form-data` 方式的文件上传。理解这些组件的工作原理和使用方法,对于开发涉及文件交互的Web应用...
### 解决Java enctype "multipart/form-data" 文件上传传值问题 在Java Web开发中,处理文件上传是一项常见的任务。特别是当涉及到使用`multipart/form-data`作为表单的编码类型时,这种需求更为突出。本文将深入...
在Java编程领域,文件上传是...总的来说,这个"文件上传实例-JAVA"提供了一个基础的文件上传实现,可以帮助开发者理解文件上传的核心概念和流程。实际开发中,可以根据项目需求和安全规范,进一步完善和优化这个实例。
本实例主要探讨如何在Struts1中实现多文件上传功能,并结合Form中传递List类型的数据,这对于理解MVC模式下的文件处理和数据传递有重要作用。我们将深入讨论以下几个关键知识点: 1. **Struts1框架基础**: Struts...
本篇文章将详细探讨如何使用POI库来导入Excel文件,并结合form表单提交的数据进行处理。我们将讨论以下几个核心知识点: 1. **Apache POI简介** Apache POI 是一个开源项目,它提供了API来处理Microsoft的Office...
在Java Web开发中,文件上传是一项常见的功能,用于允许用户上传图片、文档等文件到服务器。本实例将探讨如何利用jspSmart库来实现在数据库中存储上传的文件。jspSmart是一个方便的Java库,它简化了文件上传的过程,...
它简化了从请求中提取文件和其他表单字段的过程,使得文件上传的实现更加简洁和高效。 2. **文件上传过程**: - 用户通过HTML表单选择文件,表单的`enctype`属性设置为`multipart/form-data`,以支持文件上传。 -...
在标题"php多文件上传实例"中,我们可以推断出这是一个关于PHP编程的教程,特别关注的是如何处理用户通过表单提交的多个文件。 首先,我们要理解PHP中的文件上传机制。这涉及到HTTP协议中的multipart/form-data编码...
jQuery Form插件支持文件上传,即使在跨域环境下也能实现。只需在表单中添加`enctype="multipart/form-data"`属性,然后使用`ajaxForm`或`ajaxSubmit`,插件会自动处理文件上传。 6. **进度条与状态显示** 对于大...
- 异步处理:使用异步操作处理文件上传,提高用户体验。 - 错误处理:添加适当的错误处理机制,以处理上传失败的情况。 5. **性能优化**: - 分块上传:对于大文件,可以考虑分块上传,减少内存占用和提高上传...
在这个"Servlet实现的上传文件实例"中,我们将深入探讨如何使用Servlet来处理客户端上传的文件。上传文件是Web应用程序中常见的功能,例如用户提交简历、上传图片或者共享文档等。以下是关于这个主题的详细知识点: ...
在这个"文件上传-jar包齐全"的项目中,开发者可能已经配置好了所有必需的依赖,并编写了完整的文件上传处理逻辑,包括前端表单提交、后端接收文件、验证、存储以及可能的错误处理。对于初学者或需要快速实现文件上传...
在这个实例中,我们将探讨如何使用`common-fileupload`库来处理文件上传,同时结合form表单数据的提交。 首先,让我们理解`fileList = upload.parseRequest(request);`这行代码在文件上传过程中的作用。`upload....
本实例将详细讲解如何使用JavaServer Pages(JSP)技术实现文件上传并存储到服务器的代码实践。 一、JSP概述 JSP(JavaServer Pages)是一种动态网页开发技术,它允许开发者在HTML页面中嵌入Java代码,从而在服务器...
在实际应用中,文件上传和下载以及防止表单重复提交是两个常见的需求,同时也是开发者必须掌握的重要技能。 1. **文件上传** 文件上传功能在Struts2中通过`Struts2`提供的插件来实现,主要依赖于`Apache Commons ...
**借助Commons FileUpload组件实现文件上传** Apache Commons FileUpload组件简化了文件上传的处理过程。首先,你需要在项目中引入两个JAR包:`commons-fileupload.jar`和`commons-io.jar`。然后,在Servlet中,你...
通过这种方式,不仅能够保持页面的非阻塞性质,还能够有效处理文件上传过程中可能出现的各种情况,从而提供良好的用户体验。此外,本文还提供了具体的代码示例,帮助读者更好地理解和实现这一功能。虽然 AJAX 为 Web...
利用 jquery.form.js插件,php提交信息,ajax提交,里面包含了上传文件的类,以及生成缩略图,保存到数据库省略了这一步,大家可以根据自己的项目进行修改。前后台大家自行完善,这是一个实例。
在这个"上传实例"中,你可能会发现一个基本的ASP文件上传脚本,通过学习和理解这个实例,你可以了解ASP如何处理文件上传,并以此为基础构建自己的上传功能。不过,记得去除实例中不必要的代码,使其更加简洁和高效。
- **表单提交**: 在Web应用中,文件上传通常通过HTML `<form>` 元素的 `enctype="multipart/form-data"` 属性实现。用户选择文件后,表单会被提交到服务器。 - **Java Servlet**: 服务器端,我们需要一个Servlet来...