Я мое приложение, я пытаюсь отправить изображение через PHP-сервер. Проблема в том, что PHP-программисты говорят, что их следует отправлять как данные. Ниже приведен код, который я использую в настоящее время, пожалуйста, помогите мне преобразовать изображение в данные и получить ответ с сервера.
InputStream is; private int serverResponseCode; private String serverResponseMessage; @Override public void onCreate(Bundle icicle) { super.onCreate(icicle); setContentView(R.layout.main); HttpURLConnection connection = null; DataOutputStream outputStream = null; DataInputStream inputStream = null; String pathToOurFile = "/sdcard/siva.PNG"; Log.e("pathToOurFile",""+pathToOurFile); String urlServer = "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX/upload.php"; String lineEnd = "\r\n"; String twoHyphens = "--"; String boundary = "*****"; Log.e("URL Server",""+urlServer); int bytesRead, bytesAvailable, bufferSize; byte[] buffer; int maxBufferSize = 1*1024*1024; Log.e("maxBufferSize",""+maxBufferSize); try { FileInputStream fileInputStream = new FileInputStream(new File(pathToOurFile) ); Log.e("FIS",""+fileInputStream); URL url = new URL(urlServer); connection = (HttpURLConnection) url.openConnection(); // Allow Inputs & Outputs connection.setDoInput(true); connection.setDoOutput(true); connection.setUseCaches(false); // Enable POST method connection.setRequestMethod("POST"); connection.setRequestProperty("Connection", "Keep-Alive"); connection.setRequestProperty("Content-Type", "multipart/form-data;boundary="+boundary); outputStream = new DataOutputStream( connection.getOutputStream() ); outputStream.writeBytes(twoHyphens + boundary + lineEnd); outputStream.writeBytes("Content-Disposition: form-data; name=\"uploadedfile\";filename=\"" + pathToOurFile +"\"" + lineEnd); outputStream.writeBytes(lineEnd); bytesAvailable = fileInputStream.available(); bufferSize = Math.min(bytesAvailable, maxBufferSize); buffer = new byte[bufferSize]; // Read file bytesRead = fileInputStream.read(buffer, 0, bufferSize); while (bytesRead > 0) { outputStream.write(buffer, 0, bufferSize); bytesAvailable = fileInputStream.available(); bufferSize = Math.min(bytesAvailable, maxBufferSize); bytesRead = fileInputStream.read(buffer, 0, bufferSize); } outputStream.writeBytes(lineEnd); outputStream.writeBytes(twoHyphens + boundary + twoHyphens + lineEnd); // Responses from the server (code and message) Log.e("con",String.valueOf(connection.getDoOutput())); serverResponseCode = connection.getResponseCode(); serverResponseMessage = connection.getResponseMessage(); Log.e("response",""+serverResponseCode); Log.e("serverResponseMessage",""+serverResponseMessage); fileInputStream.close(); outputStream.flush(); outputStream.close(); } catch (Exception ex) { Log.e("Exception Handling",""+ex); } }
Atlast я нашел ответ, я сделал небольшую ошибку … В приведенном выше коде я изменил только одно слово в следующей строке
outputStream.writeBytes ("Content-Disposition: form-data; name = \" uploadedfile \ "; filename = \" "+ pathToOurFile +" \ "" + lineEnd);
В приведенной выше строке основной частью является слово «uploadedfile». Это слово должно быть указано программистом php, иначе файл, который мы отправляем, не будет заменен.
Пожалуйста, обратитесь сюда.