마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

웹서버에 이미지와 String(회원id) 값을 동시에 전달하고 싶습니다..

–1 추천

웹서버에 이미지를 올리는 것 까지는 구현했습니다.

이미지를 전송과 동시에 ID값을 넘겨주고 싶습니다.. 

 

이미지는 이렇게 전달해주는 걸 알겠는데..

dataOutputStream.writeBytes(twoHyphens + boundary + lineEnd);
dataOutputStream.writeBytes("Content-Disposition: form-data; name=\"uploaded_file\";filename=\"" 
                                                 + Send_File_Path + "\"" + lineEnd);
dataOutputStream.writeBytes(lineEnd);

텍스트는 어떻게 전달해주는지 모르겠어요 ㅠㅠ

또 PHP에서는 어떻게 받아오는지도 모르겠어요 ...

어떻게 해야되는지 도저히 안풀리네요 ㅠㅠ 도와주시면 감사하겠습니다..

PHP소스

<?php
    header("Content-Type:text/html;charset=utf-8");
    $file_path = "/home/hosting_users/matchgame/www/test_matchgame/img/";
    
    if(move_uploaded_file($_FILES['uploaded_file']['tmp_name'], $file_path)) {
        echo "success";
        rename($file_path, $file_path2);

    } else{
        echo "fail";
    }
 ?>

 

자바소스

// Open a HTTP  connection to  the URL
            conn = (HttpURLConnection) url.openConnection();
            conn.setDoInput(true); // Allow Inputs
            conn.setDoOutput(true); // Allow Outputs
            conn.setUseCaches(false); // Don't use a Cached Copy
            conn.setRequestMethod("POST");
            conn.setRequestProperty("Connection", "Keep-Alive");
            conn.setRequestProperty("ENCTYPE", "multipart/form-data");
            conn.setRequestProperty("Content-Type", "multipart/form-data;boundary=" + boundary);
            conn.setRequestProperty("uploaded_file", Send_File_Path);



            dataOutputStream = new DataOutputStream(conn.getOutputStream());

            dataOutputStream.writeBytes(twoHyphens + boundary + lineEnd);
            dataOutputStream.writeBytes("Content-Disposition: form-data; name=\"uploaded_file\";filename=\"" + Send_File_Path + "\"" + lineEnd);
            dataOutputStream.writeBytes(lineEnd);

            // create a buffer of  maximum size
            bytesAvailable = fileInputStream.available();
            bufferSize = Math.min(bytesAvailable, maxBufferSize);
            buffer = new byte[bufferSize];

            // read file and write it into form...
            bytesRead = fileInputStream.read(buffer, 0, bufferSize);

            while (bytesRead > 0) {

                dataOutputStream.write(buffer, 0, bufferSize);
                bytesAvailable = fileInputStream.available();
                bufferSize = Math.min(bytesAvailable, maxBufferSize);
                bytesRead = fileInputStream.read(buffer, 0, bufferSize);

                Log.e(TAG, "파일 사이즈 : " + Obj_File_Path.length());
                Log.e(TAG,"maxBufferSize : " + maxBufferSize);

            }

            // send multipart form data necesssary after file data...(파일 데이터 다음에 필요한 여러 부분 양식 데이터 보내기)
            dataOutputStream.writeBytes(lineEnd);
            dataOutputStream.writeBytes(twoHyphens + boundary + twoHyphens + lineEnd);

            // 서버응답코드 GET
            serverResponseCode = conn.getResponseCode();
            String serverResponseMessage = conn.getResponseMessage();
            Log.e(TAG, "HTTP Response is : " + serverResponseMessage + ": " + serverResponseCode);

            if(serverResponseCode == 200){
                Log.e( TAG,"성공");
            }else{
                Log.e( TAG,"실패");
            }

            //close the streams //

            fileInputStream.close();
            dataOutputStream.flush();
            dataOutputStream.close();

 

끼링 (130 포인트) 님이 2018년 12월 1일 질문

1개의 답변

0 추천

retrofit multipart upload

retrofit은 좋은 라이브러리입니다. 직접 만들지 마시고 이거 쓰시면 편해요.

쎄미 (162,410 포인트) 님이 2018년 12월 2일 답변
...