0

ファイルをアップロードしようとしていますが、html フォームでは実行していません。QueryParam と PathParam は使用できません。誰でもストリームを渡す方法を教えてもらえますか。

私の HttpClient は次のようになります。

try
    {
        HttpClient httpclient = new DefaultHttpClient();
        InputStream stream=new FileInputStream(new File("C:/localstore/ankita/Desert.jpg"));
        String url="http://localhost:8080/Cloud/webresources/fileupload";
        HttpPost httppost = new HttpPost(url);
        HttpResponse response = httpclient.execute(httppost);
    }
    catch(Exception e){}

私のWebサービスクラスは次のようになります。

@Path("/fileupload")
public class UploadFileService {

@POST
@Consumes(MediaType.APPLICATION_OCTET_STREAM)

public Response uploadFile(InputStream in) throws IOException
{     
    String uploadedFileLocation = "c://filestore/Desert.jpg" ;

    // save it
    saveToFile(in, uploadedFileLocation);

    String output = "File uploaded via Jersey based RESTFul Webservice to: " + uploadedFileLocation;

    return Response.status(200).entity(output).build();

}

// save uploaded file to new location
private void saveToFile(InputStream uploadedInputStream,String uploadedFileLocation) 
{
    try {
        OutputStream out = null;
        int read = 0;
        byte[] bytes = new byte[1024];

        out = new FileOutputStream(new File(uploadedFileLocation));
        while ((read = uploadedInputStream.read(bytes)) != -1) 
        {
            out.write(bytes, 0, read);
        }
        out.flush();
        out.close();
    } catch (IOException e) 
    {
        e.printStackTrace();
    }

}

}

誰か助けてくれませんか??

 String url="http://localhost:8080/Cloud/webresources/fileupload";
        HttpClient httpclient = new DefaultHttpClient();
        HttpPost httppost = new HttpPost(url);
        InputStreamEntity reqEntity = new InputStreamEntity(new FileInputStream(new File("C:/localstore/ankita/Desert.jpg")), -1);
        reqEntity.setContentType("binary/octet-stream");
        reqEntity.setChunked(true); // Send in multiple parts if needed
        httppost.setEntity(reqEntity);
        HttpResponse response = httpclient.execute(httppost);   

Web サービスはどのようになりますか?

4

1 に答える 1

1

そんなことはできません。ストリームはシリアル化できないため、HTTP 要求でストリームを渡すことはできません。

これを行う方法は、 を作成しHttpEntityてストリームをラップし (例: )、を使用してオブジェクトInputStreamEntityにアタッチすることです。次に、POST が送信され、クライアントはストリームから読み取り、バイトをリクエストの「POST データ」として送信します。HttpPOSTsetEntity

于 2013-05-10T16:09:16.660 に答える