泽西岛图像上传客户端
Jersey Image Upload Client
我正在尝试使用 Jersey webservice 上传图片,我正在使用 jersey 客户端上传图片。
下面是球衣网络服务,它接受输入流并在服务器上上传图像。当我使用 jsp 多部分表单上传直接调用它时它工作正常但当我使用 jersey 客户端
上传图像时失败
@POST
@Path("/upload")
@Consumes(MediaType.MULTIPART_FORM_DATA)
public Response uploadFile(
@FormDataParam("file") InputStream uploadedInputStream,
@FormDataParam("file") FormDataContentDisposition fileDetail) throws ServiceException
{
// upload code
}
下面是用于上传图片的 Jersey 客户端,客户端代码是从 php rest 客户端调用的另一个 Web 服务的一部分,如果我直接调用jersey 网络服务上传图像工作正常,但当我使用 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)
请帮助我确定我在这里遗漏了什么。
谢谢
这是使用球衣客户端和网络服务上传图片的完整示例
客户端代码
public class Test {
private static URI getBaseURI() {
return UriBuilder.fromUri("http://localhost:8080/restfullwebservice/resources/generic").build("");
}
public static void main(String[] args) throws FileNotFoundException {
final ClientConfig config = new DefaultClientConfig();
final Client client = Client.create(config);
final WebResource resource = client.resource(getBaseURI()).path("upload");
final File fileToUpload = new File("C:/Users/Public/Pictures/Desert.jpg");
final FormDataMultiPart multiPart = new FormDataMultiPart();
if (fileToUpload != null) {
multiPart.bodyPart(new FileDataBodyPart("file", fileToUpload,
MediaType.APPLICATION_OCTET_STREAM_TYPE));
}
final ClientResponse clientResp = resource.type(
MediaType.MULTIPART_FORM_DATA_TYPE).post(ClientResponse.class,
multiPart);
System.out.println("Response: " + clientResp.getClientResponseStatus());
client.destroy();
}
}
网络服务服务器代码
@POST
@Path("upload")
@Consumes(MediaType.MULTIPART_FORM_DATA)
public void uploadFile(@FormDataParam("file") InputStream uploadedInputStream, @FormDataParam("file") FormDataContentDisposition fileDetail) throws ServiceChannelException {
OutputStream os = null;
try {
File fileToUpload = new File("C:/Users/Public/Pictures/Desert1.jpg");
os = new FileOutputStream(fileToUpload);
byte[] b = new byte[2048];
int length;
while ((length = uploadedInputStream.read(b)) != -1) {
os.write(b, 0, length);
}
} catch (IOException ex) {
Logger.getLogger(GenericResource.class.getName()).log(Level.SEVERE, null, ex);
} finally {
try {
os.close();
} catch (IOException ex) {
Logger.getLogger(GenericResource.class.getName()).log(Level.SEVERE, null, ex);
}
}
}
我正在尝试使用 Jersey webservice 上传图片,我正在使用 jersey 客户端上传图片。 下面是球衣网络服务,它接受输入流并在服务器上上传图像。当我使用 jsp 多部分表单上传直接调用它时它工作正常但当我使用 jersey 客户端
上传图像时失败@POST
@Path("/upload")
@Consumes(MediaType.MULTIPART_FORM_DATA)
public Response uploadFile(
@FormDataParam("file") InputStream uploadedInputStream,
@FormDataParam("file") FormDataContentDisposition fileDetail) throws ServiceException
{
// upload code
}
下面是用于上传图片的 Jersey 客户端,客户端代码是从 php rest 客户端调用的另一个 Web 服务的一部分,如果我直接调用jersey 网络服务上传图像工作正常,但当我使用 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)
请帮助我确定我在这里遗漏了什么。 谢谢
这是使用球衣客户端和网络服务上传图片的完整示例 客户端代码
public class Test {
private static URI getBaseURI() {
return UriBuilder.fromUri("http://localhost:8080/restfullwebservice/resources/generic").build("");
}
public static void main(String[] args) throws FileNotFoundException {
final ClientConfig config = new DefaultClientConfig();
final Client client = Client.create(config);
final WebResource resource = client.resource(getBaseURI()).path("upload");
final File fileToUpload = new File("C:/Users/Public/Pictures/Desert.jpg");
final FormDataMultiPart multiPart = new FormDataMultiPart();
if (fileToUpload != null) {
multiPart.bodyPart(new FileDataBodyPart("file", fileToUpload,
MediaType.APPLICATION_OCTET_STREAM_TYPE));
}
final ClientResponse clientResp = resource.type(
MediaType.MULTIPART_FORM_DATA_TYPE).post(ClientResponse.class,
multiPart);
System.out.println("Response: " + clientResp.getClientResponseStatus());
client.destroy();
}
}
网络服务服务器代码
@POST
@Path("upload")
@Consumes(MediaType.MULTIPART_FORM_DATA)
public void uploadFile(@FormDataParam("file") InputStream uploadedInputStream, @FormDataParam("file") FormDataContentDisposition fileDetail) throws ServiceChannelException {
OutputStream os = null;
try {
File fileToUpload = new File("C:/Users/Public/Pictures/Desert1.jpg");
os = new FileOutputStream(fileToUpload);
byte[] b = new byte[2048];
int length;
while ((length = uploadedInputStream.read(b)) != -1) {
os.write(b, 0, length);
}
} catch (IOException ex) {
Logger.getLogger(GenericResource.class.getName()).log(Level.SEVERE, null, ex);
} finally {
try {
os.close();
} catch (IOException ex) {
Logger.getLogger(GenericResource.class.getName()).log(Level.SEVERE, null, ex);
}
}
}