Я работаю над требованием выгрузки файлов, из-за технических ограничений мне пришлось использовать jquery & ajax для внешней обработки и jersey jax-RS для на стороне сервера . Проблема заключается в получении файловых данных со стороны клиента с использованием следующего кода.
JS на стороне клиента
var formData = new FormData();
formData.append('file', $(".hidden_file_chooser"+xxxxxx).get(0).files[0]);
$.ajax({
url : '/apiWeb2/ws/edition/uploadFile/111111111',
type : 'POST',
data : formData,
cache : false,
contentType : false,
processData : false,
success : function(data, textStatus, jqXHR) {
alert("yes");
},
error : function(jqXHR, textStatus, errorThrown) {
alert("no");
}
});
на стороне сервера
@Path("/edition")
public class UploadWS {
@POST
@Path("/uploadFile/{codeProduit}")
@Consumes({MediaType.MULTIPART_FORM_DATA})
@Produces({MediaType.APPLICATION_JSON})
public String uploadFile(@PathParam("codeProduit") String codeProduit, @FormDataParam("file") InputStream fileInputStream, @FormDataParam("file") FormDataContentDisposition fileMetaData) {
return new Gson().toJson("000");
}
}
web.xml сторона конфигурации
<servlet>
<servlet-name>jersey-serlvet</servlet-name>
<servlet-class>org.glassfish.jersey.servlet.ServletContainer</servlet-class>
<init-param>
<param-name>jersey.config.server.provider.packages</param-name>
<param-value>*****</param-value>
</init-param>
<init-param>
<param-name>jersey.config.server.provider.classnames</param-name>
<param-value>org.glassfish.jersey.media.multipart.MultiPartFeature</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>jersey-serlvet</servlet-name>
<url-pattern>/ws/*</url-pattern>
</servlet-mapping>
pom.xml связанные зависимости
<dependency>
<groupId>javax.ws.rs</groupId>
<artifactId>javax.ws.rs-api</artifactId>
<version>${jaxrs.version}</version>
</dependency>
<dependency>
<groupId>org.glassfish.jersey.media</groupId>
<artifactId>jersey-media-multipart</artifactId>
<version>${jersey2.version}</version>
</dependency>
<dependency>
<groupId>org.glassfish.jersey.core</groupId>
<artifactId>jersey-client</artifactId>
<version>${jersey2.version}</version>
</dependency>
<dependency>
<groupId>org.glassfish.jersey.containers</groupId>
<artifactId>jersey-container-servlet</artifactId>
<version>${jersey2.version}</version>
</dependency>
<dependency>
<groupId>org.glassfish.jersey.core</groupId>
<artifactId>jersey-server</artifactId>
<version>${jersey2.version}</version>
</dependency>
<dependency>
<groupId>org.glassfish.jersey.bundles.repackaged</groupId>
<artifactId>jersey-guava</artifactId>
<version>2.25</version>
</dependency>
<dependency>
<groupId>org.glassfish.jersey.core</groupId>
<artifactId>jersey-common</artifactId>
<version>2.26</version>
</dependency>
<dependency>
<groupId>org.glassfish.jersey.inject</groupId>
<artifactId>jersey-hk2</artifactId>
<version>2.26</version>
</dependency>
<jersey2.version>2.26</jersey2.version>
<jaxrs.version>2.1</jaxrs.version>
Я продолжаю получатьnull в параметре inputStream.
Заранее спасибо.