2

spring/jackson Web サービスにファイルをアップロードしようとすると、問題が発生します。私のサービスの説明は次のとおりです。

@POST
@Path("/foo/{someID}")
@Consumes(MediaType.MULTIPART_FORM_DATA)
public Response uploadFile(
        @FormDataParam("file") InputStream uploadedInputStream,
        @FormDataParam("file") com.sun.jersey.core.header.FormDataContentDisposition fileDetail,
        @PathParam("someID") Long supplierID)
{
}

私が得ているエラーは次のとおりです。

The request sent by the client was syntactically incorrect.

これは、機能していない Chrome から取得したヘッダーです。

Accept:*/*
Accept-Charset:ISO-8859-1,utf-8;q=0.7,*;q=0.3
Accept-Encoding:gzip,deflate,sdch
Accept-Language:en-US,en;q=0.8
Connection:keep-alive
Content-Length:879585
Content-Type:multipart/form-data; boundary=----WebKitFormBoundary1VA1IfWOdVmZqk49
Cookie:SPRING_SECURITY_REMEMBER_ME_COOKIE=COOKIE_HERE
Host:localhost:8081
Origin:chrome-extension://hgmloofddffdnphfgcellkdfbfbjeloo
User-Agent:Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.31 (KHTML, like Gecko) Chrome/26.0.1410.64 Safari/537.31
Request Payload
------WebKitFormBoundary1VA1IfWOdVmZqk49
Content-Disposition: form-data; name="file"; filename="Chrysanthemum.jpg"
Content-Type: image/jpeg


------WebKitFormBoundary1VA1IfWOdVmZqk49--

コンテンツの種類ではなく、コンテンツのサイズであることがわかりました。9377 バイトでは壊れますが、9375 バイトでは機能します。残念ながら、Tomcat、Spring、または Jersey で文書化されている制限 (デフォルトまたはその他) と一致しないようです。

4

2 に答える 2

1

それで、やっとこれが何なのか分かりました。問題は、Tomcat がこの転送のためにファイル用にメモリに割り当てるスペースの量を超えたことです。次に、ファイルを一時スペースに書き込もうとしましたが、一時スペースが原因で tomcat アプリケーションからの書き込みが妨げられました。これが修正されると、すべてが期待どおりに機能し始めました。したがって、Tomcat が一時ファイル (私の例では C:\Program Files\Apache Software Foundation\Tomcat 7.0\temp) を書き込む場所に同様のチェックを実行した場合は、このディレクトリに書き込むための正しいアクセス権があることを確認してください。

于 2013-07-18T02:13:37.290 に答える