ปกติการส่งไฟล์ข้อมูลต่าง ๆ และการส่งข้อความจากแอนดรอยด์ไปยังเซิร์ฟเวอร์นั้นจะทำแยกกัน
แต่ในกรณีนี้คือ ส่งไฟล์ข้อมูลและข้อความ (String) ไปพร้อมกัน
จากเดิม code การส่งข้อมูลไฟล์เป็นเช่นนี้
แต่ในกรณีนี้คือ ส่งไฟล์ข้อมูลและข้อความ (String) ไปพร้อมกัน
จากเดิม code การส่งข้อมูลไฟล์เป็นเช่นนี้
String fileName = sourceFileUri; HttpURLConnection conn = null; DataOutputStream dos = null; String lineEnd = "\r\n"; String twoHyphens = "--"; String boundary = "*****"; int bytesRead, bytesAvailable, bufferSize; byte[] buffer; int maxBufferSize = 1 * 1024 * 1024; File sourceFile = new File(sourceFileUri); FileInputStream fileInputStream = new FileInputStream(sourceFile_imagepath); URL url = new URL(upLoadServerUri); 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", fileName); dos = new DataOutputStream(conn.getOutputStream()); dos.writeBytes(twoHyphens + boundary + lineEnd); dos.writeBytes("Content-Disposition: form-data; name=\"uploaded_file\";filename=\"" + fileName + "\"" + lineEnd); dos.writeBytes(lineEnd);
// code here for String
// 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) { dos.write(buffer, 0, bufferSize); bytesAvailable = fileInputStream.available(); bufferSize = Math.min(bytesAvailable, maxBufferSize); bytesRead = fileInputStream.read(buffer, 0, bufferSize); } // send multipart form data necesssary after file data... dos.writeBytes(lineEnd); dos.writeBytes(twoHyphens + boundary + twoHyphens + lineEnd); // Responses from the server (code and message) serverResponseCode = conn.getResponseCode(); String serverResponseMessage = conn.getResponseMessage(); Log.i("uploadFile", "HTTP Response is : " + serverResponseMessage + ": " + serverResponseCode); if (serverResponseCode == 200) { runOnUiThread(new Runnable() { public void run() { String msg = "File Upload Completed.\n\n See uploaded file here : \n\n" + " c:/wamp/www/echo/uploads"; messageText.setText(msg); Toast.makeText(MainActivity.this, "File Upload Complete.", Toast.LENGTH_SHORT) .show(); } }); } // close the streams // fileInputStream.close(); dos.flush(); dos.close(); ให้ใส่ code นี้ลงไปยัง บรรทัดที่มี //Code here for String
dos.writeBytes("Content-Disposition: form-data; name=\"parameter\"" + lineEnd); dos.writeBytes(parameter); dos.writeBytes(lineEnd);
จากนั้นทำการรับตัวแปรข้อความ ใน php $parameter = $_POST["parameter"];