0

Jersey Web Serviceを使用してAndroidからサーバーにファイルをアップロードしようとしています。コードを書きましたが、コードに問題があります。エラーが表示され ます- Java クラス com.sun.jersey.core.header.FormDataContentDisposition、および Java タイプ クラス com.sun.jersey.core.header.FormDataContentDisposition のメッセージ本文リーダー、および MIME メディア タイプ multipart/form-data はありませんでしたクラスパスにmimepull.jar を追加しましたが、それでもこのエラーが生成されます。

これは私のフロントエンド Java コードです。

        HttpClient client = new DefaultHttpClient();
    HttpParams httpParameters = new BasicHttpParams();
    HttpConnectionParams.setConnectionTimeout(httpParameters,
            CONNECTION_TIMEOUT); // Timeout
    HttpConnectionParams.setSoTimeout(httpParameters, SO_TIMEOUT);
    HttpConnectionParams.setTcpNoDelay(httpParameters, true);
    FileBody fileContent= new FileBody(file);
    HttpResponse response;
    HttpPost httppost = new HttpPost(Global.URL);
    try {
        MultipartEntity entity = new MultipartEntity();
        entity.addPart("file", fileContent);
        httppost.setHeader("content-type", "multipart/form-data");
        httppost.setEntity(entity);
        response = client.execute(httppost);
        HttpEntity resEntity = response.getEntity();
    }catch(Exception e){
    }

これは私の Web サービスです。

@POST
@Consumes(MediaType.MULTIPART_FORM_DATA)
@Path("/upload_file")
public Response uploadFile(
        @FormDataParam("file") InputStream uploadedInputStream,
        @FormDataParam("file") FormDataContentDisposition fileDetail) {
    System.out.println("upload_file");
    String uploadedFileLocation = "/aanbieding/assets/upload/requester/"
            + fileDetail.getFileName();
    Util.saveToFile(uploadedInputStream, uploadedFileLocation);               // save uploaded file to new location
    String output = "File uploaded via Jersey based RESTFul Webservice to: "
            + uploadedFileLocation;
    System.out.println(output);
    return Response.status(200).entity(output).build();
}

このコードの何が問題なのかを理解するのを手伝ってください。前もって感謝します....

4

2 に答える 2

0

マルチパート/フォームデータを作成するには、クライアントコードで FormDataMultipart オブジェクトを使用する必要があると思います。そして、それに添付ファイルを追加します。アタッチメント名と Web サービス側のパラメーターの名前が同じであることを確認してください。 FormDataMultipart を使用したサンプル クライアント コードは次のとおりです。

    FormDataMultiPart mMultiPart = null;
    byte fileContent[] = readFile(fileName); /// readfile is a method read file bytes
    if (mMultiPart == null) {
        mMultiPart = new FormDataMultiPart();
    }
    mMultiPart.field(attachmentName, fileContent,MediaType.APPLICATION_OCTET_STREAM_TYPE);

それが役に立てば幸い!

于 2013-05-09T05:58:31.917 に答える