这是我关于stackoverflow的第一个问题,所以如果你对我的解释方式有任何评论,我很乐意接受任何指示。
所以这是:
我想将文本和图像发送到服务器上的php脚本。我可以成功地将两者分开,但不能在一起。到目前为止,我将其用于字符串:
String dataSend = URLEncoder.encode("User","UTF-8") +"="+URLEncoder.encode(username,"UTF-8");
URL url = new URL(urlCopyImage);
URLConnection connection = url.openConnection();
connection.setDoOutput(true);
OutputStreamWriter out = new OutputStreamWriter(connection.getOutputStream());
out.write(dataSend);
out.close();
对于我使用的图像:
URL url = new URL(urlCopyImage);
URLConnection connection = url.openConnection();
connection.setDoOutput(true);
ImageIO.write(image,"PNG", connection.getOutputStream());
我可以以某种方式将这两者结合起来吗?
在php脚本中我只使用$_POST
来接收字符串和我使用的图像:
$incomingData = file_get_contents('php://input');
欢迎任何提示。
为了记录,我使用php文件在服务器上创建包含此图像的文件。用户名对于指定目录很有用。
编辑:
感谢您的回答,我已经能够使它成功,但我还不太了解它。
MultipartEntity multipart = new MultipartEntity();
multipart.addPart("User", new StringBody(username));
ByteArrayOutputStream os = new ByteArrayOutputStream();
ImageIO.write(image, "png", os);
InputStream is = new ByteArrayInputStream(os.toByteArray());
ContentBody cb = new InputStreamBody(is, "something.png");
multipart.addPart("Image", cb);
HttpPost post = new HttpPost(urlCopyImage);
post.setEntity(multipart);
HttpClient client = new DefaultHttpClient();
HttpResponse response = client.execute(post);
我正在向contentbody发送一个inputstreambody,它从ImageIO获取字节流。那很棒。但我得不到的是inputstreambody的第二个参数应该做什么。虽然这有效,但感觉不对。
是的,这是php代码:$user = $_POST['User'];
copy($_FILES['Image']['tmp_name'],$filename);
如果有人能解释我到底在做什么,我将不胜感激。谢谢你的帮助!
答案 0 :(得分:0)
使用Apache HTTP客户端使用mime类型multipart / form-data发出POST请求,并为二进制数据和文本添加部分。
在PHP端,您可以通过$ _FILE
读取文件请参阅我之前写的这篇博文http://zybnet.com/java-http-client-and-post-requests/