0

iPad アプリケーション (worklightV6 を使用) で PhoneGap を使用して写真を RestFul API の Websphere Application Server にアップロードしようとしています。

私のWebブラウザコードは次のようになります:

var photosURI = [];
var manageDeviceDocumentsURI = "http://IP:PORT/****/rest/AmanageDevicesDocuments.upload";

function cameraSuccessCallback(imageURI){
   photosURI.push(imageURI);
}

$("#content").on("click", "#takePicture", function(){
   cameraOptions = {quality : 20, allowEdit: true, desinationType.FILE_URI };
   navigator.camero.getPicture(cameraSuccessCallback, cammeraErrorCallback, cameraOptions);
});

$("#content").on("click", "#uploadPictures", function(){

   function fail(error){
     alert("An error has occured: Code " + error.code);
     console.log("Upload error source " + error.source);
     console.log("Upload error target " + error.target); 
   }

   function win(){
     alert('transfert ok');
   }

   var fileURI = photosURI.pop();
   var options = new FileUploadOptions();
   options.fileKey = "file";
   options.fileName = fileURI.substr(fileURI.lastIndexOf('/') + 1);
   options.mimeType = "multipart/form-data";

   var ft = new FileTransfert();
   ft.upload(fileURI, encodeURI(manageDeviceDocumentsURI), win, fail, otpions);
});

サーバー上の私のJavaコードは次のようになります:

@Path("manageDeviceDocuments")
public class ManageDeviceDocuments {

    @POST
    @Path("upload")
    @Consumes(MediaType.MULTIPART_FORM_DATA)
    @Produces(MediaType.APPLICATION_JSON)
    public JSONArray upload(@Context ServletConfig servletConfig,
                            @Context HttpHeaders httpHeaders, @Context UriInfo uriInfo,
                            BufferedInMultiPart bimp) throws IOException {

    }

}

そして、Webブラウザーで次のエラーが発生します。

エラー 415 : サポートされていないメディア タイプ、コード 3 ...

そしてこれはサーバー上で:

Java クラス org.apache.wink.common.model.multipart.BufferedInMultiPart、および Java タイプ クラス org.apache.wink.common.model.multipart.BufferedInMultiPart、および MIME メディア タイプ multipart/form-data;boundary のメッセージ本文リーダー。 =++++++org.apache.cordova.formBoundary が見つかりませんでした。MIME メディア タイプと互換性のある登録済みメッセージ本文リーダーは次の とおり
です。 jersey.core.impl.provider.entity.StringProvider
com.sun.jersey.core.impl.provider.entity.ByteArrayProvider
com.sun.jersey.core.impl.provider.entity.FileProvider
com.sun.jersey.core.impl .provider.entity.InputStreamProvider
com.sun.jersey.core.impl.provider.entity.DataSourceProvider
com.sun.jersey.core.impl.provider.entity.XMLJAXBElementProvider$General com.sun.jersey.core.impl.provider.entity.ReaderProvider
com.sun .jersey.core.impl.provider.entity.DocumentProvider
com.sun.jersey.core.impl.provider.entity.SourceProvider$StreamSourceReader com.sun.jersey.core.impl.provider.entity.SourceProvider$SAXSourceReader com.sun.jersey.core.impl.provider.entity.SourceProvider$ DOMSourceReader com.sun.jersey.json.impl.provider.entity.JSONJAXBElementProvider$General com.sun.jersey.core.impl.provider.entity.XMLRootElementProvider$General com.sun.jersey.core.impl.provider.entity.XMLListElementProvider $General com.sun.jersey.core.impl.provider.entity.XMLRootObjectProvider$General com.sun.jersey.core.impl.provider.entity.EntityHolderReader
com.sun.jersey.json.impl.provider.entity.JSONRootElementProvider$一般 com.sun.jersey.json.impl.provider.entity.JSONListElementProvider$General

よろしくお願いいたします。

4

1 に答える 1

2

RestFul API を次のように変更することにより:

@POST 
@Path("upload") 
@Consumes(MediaType.MULTIPART_FORM_DATA) 
public Response upload(@FormDataParam("file") InputStream uploadedInputStream,@FormDataParam("file") FormDataContentDisposition fileDetail) { 

} 

そして、次の投稿MIMEParsingException in REST (私は lib パスに mimepull.jar、jersey-multipart.jar を追加しました)、私はそれを機能させることができました!

于 2013-10-29T08:08:35.593 に答える