2

これは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());

この2つをどうにかして組み合わせることはできますか?

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);

ImageIO からバイトストリームを取得する inputstreambody を contentbody に渡しています。それは素晴らしいことです。しかし、私が得られないのは、inputstreambody の 2 番目のパラメーターが何をすべきかということです。これは機能しますが、正しくないと感じます。

ところで、これはphpコードです:

$user = $_POST['User'];
copy($_FILES['Image']['tmp_name'],$filename);

誰かが私がここで何をしているのかを正確に説明できれば幸いです。ご協力いただきありがとうございます!

4

1 に答える 1

0

Apache HTTP クライアントを使用して、MIME タイプが multipart/form-data の POST リクエストを作成し、バイナリ データとテキストの両方のパーツを追加します。

PHP 側では、$_FILE 経由でファイルを読み取ることができます。

少し前に書いたこのブログ投稿を参照してくださいhttp://zybnet.com/java-http-client-and-post-requests/

于 2012-06-08T16:10:15.037 に答える