Sto tentando di caricare l'immagine utilizzando il servizio web Jersey, sto utilizzando il client jersey per caricare l'immagine. di seguito è il servizio web jersey che prende inputstream e carica l'immagine sul server. funziona benissimo quando mi chiamano direttamente utilizzando jsp multipart caricati forma, ma non riesce quando ho caricare le immagini utilizzando il client magliaJersey Image Upload Client
@POST
@Path("/upload")
@Consumes(MediaType.MULTIPART_FORM_DATA)
public Response uploadFile(
@FormDataParam("file") InputStream uploadedInputStream,
@FormDataParam("file") FormDataContentDisposition fileDetail) throws ServiceException
{
// upload code
}
Di seguito Jersey client per caricare immagine, il codice del client è parte di un altro servizio web che viene chiamato da php rest client e questo client jersey chiamano il servizio web jersey per caricare l'immagine, se io chiamano direttamente il servizio web jersey per caricare l'immagine che funziona bene, ma non funziona quando carico utilizzando client jersey.
ClientConfig config = new DefaultClientConfig();
Client client = Client.create(config);
client.setChunkedEncodingSize(1024);
WebResource wr = client
.resource("http://localhost:8080/rest/upload");
String contentDisposition = "attachment; filename=\""
+ fileDetail.getName() + "\"";
FormDataMultiPart form = new FormDataMultiPart();
ContentDisposition contentDisposition2 = new ContentDisposition(contentDisposition);
form.setContentDisposition(contentDisposition2);
FormDataBodyPart fdp = new FormDataBodyPart("file",
uploadedInputStream, MediaType.MULTIPART_FORM_DATA_TYPE);
form.bodyPart(fdp);
ClientResponse response = wr.type(MediaType.MULTIPART_FORM_DATA).post(
ClientResponse.class, form)
Per favore aiutatemi a capire cosa mi manca qui. Grazie.
Può chiarire che cosa "non funziona" si intende? Ho provato con il tuo codice esatto, usando il tipo 'FileInputStream' per' uploadInputStream' e funziona perfettamente. Una cosa che cambierei (anche se non ha causato il suo fallimento) è 'MediaType.MULTIPART_FORM_DATA_TYPE' per' fdp' a 'MediaType.APPLICATION_OCTET_STREAM_TYPE' –
Voglio dire che sta passando uploadInputStream a jersey webservice ma non contiene stesso pezzi e lo stesso tipo di contenuto che abbiamo passato dal client jersey. –
form-data è il tipo di contenuto principale della richiesta. Ma i dati del modulo vengono forniti con parti e ogni parte ha il proprio tipo di contenuto. Il file dovrebbe essere ottetto-stream e non form-data –