使用 Dojo 文件上传客户端向 Java 服务器端发送附加数据
Posted
技术标签:
【中文标题】使用 Dojo 文件上传客户端向 Java 服务器端发送附加数据【英文标题】:Send additional data to Java server-side using Dojo file upload client-side 【发布时间】:2014-11-04 18:21:48 【问题描述】:在使用 dojo 上传文件时,我需要向服务器端发送额外的数据。我怎么做?
我使用的是dojo文件上传器的上传方式。我想为服务器端的文件目标动态传递一个附加变量。
我的 javascript 代码:
function(Uploader, FileList, dom, on, Carousel, ContentPane, SwapView)
dojo.ready(function()
var form = dojo.byId("myForm");
var uploaderDIV = dojo.byId("uploader");
up = new Uploader(
label: 'Attach Files',
multiple: true,
showInput: 'before',
name : 'uploadedfiles[]',
url: '/TestServer/rest-services/submitForm',
).placeAt(uploaderDIV);
还有我的服务器端代码:
@Path("/submitForm")
@POST
@Consumes("multipart/form-data")
@Produces(MediaType.TEXT_html, MediaType.APPLICATION_JSON)
public Response uploadFile(MultipartFormDataInput input)
String fileName = "";
Map<String, List<InputPart>> formParts = input.getFormDataMap();
【问题讨论】:
一般url: '/TestServer/rest-services/submitForm?whatever=you+want
如何在服务器端读取“whatever”?我对网络编程还很陌生。
在服务器上?取决于您的服务器端语言。如果在 php 中,您可以使用$_GET['whatever']
。这种方法并不可靠,但可以完成工作。
我在服务器端使用 Java
您对 Java 的理解超出了我的理解范围。我已经编辑了您的问题,可能会引起有这方面知识的人的更多关注。
【参考方案1】:
我建议在这里使用 Apache FileUpload,因为它会极大地简化你的生活。在我的实现中,我设置了一个映射到上传 URL 的 servlet,并在 doPost
方法中处理了请求:
public class MyServlet extends HttpServlet
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
// ...
根据 bishop 直接回答您的问题提供的信息,您可以使用 ? 附加 URL 参数和 & 字符(即 ?one=one&two=two)。在服务器端,您需要从请求中读取这些 URL 参数:
String one = request.getParameter("one");
String two = request.getParameter("two");
【讨论】:
我使用了url参数,文件上传器url可以动态设置。 up.set("url", "/TestServer/rest-services/submitForm?paramname=paramvalue");并使用@QueryParam 在java 端解析它。感谢您的帮助。以上是关于使用 Dojo 文件上传客户端向 Java 服务器端发送附加数据的主要内容,如果未能解决你的问题,请参考以下文章