1

HttpRequestを使用してJavaFXを使用してファイルをアップロードしようとしています。この目的のために、私は次の関数を作成しました。

function uploadFile(inputFile : File) : Void {
    // check file
    if (inputFile == null or not(inputFile.exists()) or inputFile.isDirectory()) {
        return;
    }    
    def httpRequest : HttpRequest = HttpRequest {
        location: urlConverter.encodeURL("{serverUrl}");
        source: new FileInputStream(inputFile)
        method: HttpRequest.POST
        headers: [
            HttpHeader {
                name: HttpHeader.CONTENT_TYPE
                value: "multipart/form-data"
            }
        ]
    }
    httpRequest.start();
}

サーバー側では、JerseyRESTサービスを使用してApacheCommonsFileUploadAPIを使用して受信データを処理しようとしています。これを行うために使用されるコードは、ApacheホームページのFileUploadチュートリアルの単純なコピーです。

@Path("Upload")
public class UploadService {

  public static final String RC_OK = "OK";
  public static final String RC_ERROR = "ERROR";

  @POST
  @Produces("text/plain")
  public String handleFileUpload(@Context HttpServletRequest request) {
    if (!ServletFileUpload.isMultipartContent(request)) {
      return RC_ERROR;
    }
    FileItemFactory factory = new DiskFileItemFactory();
    ServletFileUpload upload = new ServletFileUpload(factory);
    List<FileItem> items = null;
    try {
      items = upload.parseRequest(request);
    } 
    catch (FileUploadException e) {
      e.printStackTrace();
      return RC_ERROR;
    }
    ...
  }
}   

ただし、次の場所で例外が発生しitems = upload.parseRequest(request);ます:org.apache.commons.fileupload.FileUploadException:マルチパート境界が見つからなかったため、リクエストは拒否されました

InputStreamに手動の境界情報を追加する必要があると思います。これを行う簡単な解決策はありますか?または他の解決策もありますか?

4

1 に答える 1

3

のようにInputStreamfromを使ってみたことがありますかHttpServletRequest

InputStream is = httpRequest.getInputStream();
BufferedInputStream in = new BufferedInputStream(is);
//Write out bytes

out.close();
is.close();
于 2010-04-22T05:30:49.837 に答える