上传图片并将其发送到服务器(AngularJS& Jersey)

时间:2017-02-11 17:04:33

标签: java angularjs image jersey

我的表格有字段:

<div class="form-group">
    <label>Email Address</label> 
    <input type="email" ng-model="email" class="form-control">
</div>
<div class="from-group">
    <label>Photo</label>: 
<input type="file" ngf-select ng-model="picFile" name="file" accept="image/*" ngf-max-size="2MB" required>
</div>
<div class="form-group">
    <input ng-click="uploadPic(picFile)" type="submit"  class="btn btn-lg btn-default pull-right btn-block"value="Register">
</div>

在控制器中(使用ng-file-upload):

$scope.uploadPic = 
    function(file) {
        console.log('Uploading image...');
        Upload.upload({
            url : 'upload',
            data : {
            email : $scope.email,
            file : file
    })};

我不知道如何在服务器中收到此类对象。我试过这样的事情:

@POST
@Path("/upload")
@Produces(MediaType.MULTIPART_FORM_DATA)
public void upload(@FormDataParam("file") InputStream fileIputStream,
            @FormDataParam("email") String email) {}

但是我觉得问题出在InputStream中,因为发送的对象是不同的类型?如果客户端的代码有效,如何在服务器上接收和保存图像? 再一次,app在客户端使用AngularJS,在服务器端使用Jersey开发。

1 个答案:

答案 0 :(得分:0)

解决方案,我认为:

首次下载:

  1. Jersey的媒体多-2.17.jar
  2. mimepull-1.9.3.jar
  3. 然后添加:

    <init-param>
            <param-name>jersey.config.server.provider.classnames</param-name>
            <param-value>org.glassfish.jersey.filter.LoggingFilter;
            org.glassfish.jersey.media.multipart.MultiPartFeature</param-value>
    </init-param>
    

    进入web.xml文件,在<servlet>内。