http://www.mkyong.com/webservices/jax-rs/file-upload-example-in-
jersey/
我正在遵循本指南并遇到问题。我有一些问题。
<dependency>
<groupId>org.glassfish.jersey.media</groupId>
<artifactId>jersey-media-multipart</artifactId>
<version>2.16</version>
</dependency>
<dependency>
<groupId>org.glassfish.jersey.core</groupId>
<artifactId>jersey-server</artifactId>
<version>2.16</version>
org.glassfish.jersey.server.model.ModelValidationException: Validation of the application resource model has failed during application initialization. [[FATAL] No injection source found for a parameter of type public ***.***.****.common.dto.response.AbstractResponse ***.***.****.m2m.instancetypeupload.webservice.InstanceTypeUploadWebService.upload(java.io.InputStream,org.glassfish.jersey.media.multipart.FormDataContentDisposition) at index 0.; source='ResourceMethod{httpMethod=POST, consumedTypes=[multipart/form-data], producedTypes=[application/json], suspended=false, suspendTimeout=0, suspendTimeoutUnit=MILLISECONDS, invocable=Invocable{handler=ClassBasedMethodHandler{handlerClass=class ***.***.****.m2m.instancetypeupload.webservice.InstanceTypeUploadWebService, handlerConstructors=[org.glassfish.jersey.server.model.HandlerConstructor@90516e]}, definitionMethod=public ***.***.***.common.dto.response.AbstractResponse ***.***.*****.m2m.instancetypeupload.webservice.InstanceTypeUploadWebService.upload(java.io.InputStream,org.glassfish.jersey.media.multipart.FormDataContentDisposition), parameters=[Parameter [type=class java.io.InputStream, source=file1, defaultValue=null], Parameter [type=class org.glassfish.jersey.media.multipart.FormDataContentDisposition, source=file1, defaultValue=null]], responseType=class ***.***.***.common.dto.response.AbstractResponse}, nameBindings=[]}']
这是我的网络服务
@POST
@Path("/upload")
@Consumes(MediaType.MULTIPART_FORM_DATA)
@Produces(MediaType.APPLICATION_JSON)
public AbstractResponse upload(@FormDataParam("file1") InputStream file1,
@FormDataParam("file1") FormDataContentDisposition filename1
) {
这是我的电话:
$.ajax({
url: 'http://localhost:8080/******/webapi/m2m/upload',
data: fd,
processData: false,
contentType: 'multipart/form-data',
type: 'POST',
success: function(data){
alert(JSON.stringify(data));
return;
}
});
如果Web服务只有1个参数(FormData InputStream),则可以访问该Web服务。如何解决?
谢谢peeskillet的答案。有点额外。
SEVERE: The web application [/linterm2m] created a ThreadLocal with key of type [org.jvnet.hk2.internal.PerLocatorUtilities$1] (value [org.jvnet.hk2.internal.PerLocatorUtilities$1@df94b1]) and a value of type [java.util.WeakHashMap] (value [{}]) but failed to remove it when the web application was stopped. This is very likely to create a memory leak.
如果您的项目正在使用org.glassfish
,则您正在使用Jersey 2,com.sun
即Jersey
1,则永远不要混用两者。话虽如此,您面临的错误很可能是由于您没有注册MultipartFeature
。在启动时对资源模型(资源方法)进行“正确性”验证时,如果未注册功能,则该功能特有的注释是未知的,就像没有注释一样。而且,您不能有多个不带注释的方法参数。
如果您使用ResourceConfig
,则可以简单地使用
public class JerseyConfig extends ResourceConfig {
public JerseyConfig() {
register(MultiPartFeature.class);
}
}
如果您使用的是web.xml,则可<init-param>
以为您注册的Jersey servlet 设置一个
<init-param>
<param-name>jersey.config.server.provider.classnames</param-name>
<param-value>org.glassfish.jersey.media.multipart.MultiPartFeature</param-value>
</init-param>
“我还想为Web服务添加另一个String参数。我该怎么办?”
您需要将其作为多部分请求的一部分,而客户端也需要确保将其作为多部分的一部分发送。在服务器端,只需添加另一个@FormDataParam("anotherString")StringanotherString
作为方法参数即可。至于客户端,我不知道jQuery可以帮上忙。尚未测试,但是您可以尝试执行此操作,该操作显示数据已追加到FormParam
。这是Angular的功能,我自己在其中构建了请求主体。可能有点多,因为您可能不需要显式设置内容类型。
问题内容: 我需要使用 restlet* 上传 带有其他数据 的文件 。因此,我创建了一个示例html页面,如下所示。 * 我需要从 输入字段中 读取值以及文件数据。现在可以读取文件内容。如何在同一api调用中从该输入框中获取值。 } 问题答案: 首先,您需要了解请求的内容。如果您查看发送的请求(萤火虫或其他),您将看到以下内容: 如您所见,请求中包含多个部分。这意味着您可以遍历服务器资源中的这些
我正试图使用阿拉莫菲尔上传文件。使用文件()时,上传效果很好,但是,我似乎不知道如何使用选项? 这是我的测试: 我的状态代码是415? 此外,如何在上传中发送其他参数? 谢啦 编辑 我没有设置正确的内容类型: 仍然不知道如何发送附加参数随上传。
本文向大家介绍带有多个进度条的HTML5文件上传,包括了带有多个进度条的HTML5文件上传的使用技巧和注意事项,需要的朋友参考一下 为了使其正常工作,您需要解决xhr progress事件,该事件在所有列表项都已创建后就会触发。 该XHR 应该知道你想做什么-
我想使用cURL不仅以HTTP POST发送数据参数,而且还上传具有特定表单名称的文件。我该怎么做呢?
问题内容: 我一直在寻找解决方案,但是已经找不到了。 基本上,我想从Android设备上将文件上传到http网站。但是,我不知道如何执行此操作。我在设备上使用Java,并且我想在服务器端使用PHP。我只想上传文件,而不想在服务器上做任何花哨的事情。 谁能提供代码和/或指向我所需的链接?我对此几乎没有经验,也很茫然。 谢谢,NS PS。我没有PHP编码经验。 问题答案: 是的,所以我找到了Java方
我必须使用文件发送数组数据。仅使用数据即可正常工作: 但是,既然我不能将“form_params”与“multipart”一起使用,那么如何发送带有数组和布尔数据的文件呢? 我试过了: 但是我收到一个错误,因为“contents”不接受布尔值或数组值。 我需要一些帮助。 谢谢 更新:我无法解决这个问题,最后我不得不使用一个不太好的解决方案,包括作为查询字符串的表单文件参数并仅使用Multipart