I have an app that sends an image to a server using HttpCliend and MultipartEntityBuilder. My problem is that the sending isn't successful. I get a message "Invalid file" from the server.
This is my sending method:
public void executeMultipartPost() throws ClientProtocolException, IOException { String result = ""; Log.d("DrawingFragment", "executeMultipartPost"); httpClient.setCookieStore(signiture.getCookies()); HttpPost httpPostRequest = new HttpPost(url); File file = new File(signiturePath); FileBody bin = new FileBody(file); Log.v("FileBody", bin.getFilename()); Log.d("signiturePath", signiturePath); MultipartEntityBuilder multiPartEntityBuilder = MultipartEntityBuilder .create(); Log.i("HttpRequest Headers", "==========================================================="); Header headers[] = httpPostRequest.getAllHeaders(); for(Header h:headers) { Log.i("", h.getName() + ": " + h.getValue() + "\n"); } Log.i("", "==========================================================="); multiPartEntityBuilder.addTextBody("Content-Type", "image/png"); multiPartEntityBuilder.addPart("file", bin); httpPostRequest.setEntity(multiPartEntityBuilder.build()); HttpResponse httpResponse = null; httpResponse = httpClient.execute(httpPostRequest); Log.i("HttpResponse Headers", "==========================================================="); headers = httpResponse.getAllHeaders(); for(Header h:headers) { Log.i("", h.getName() + ": " + h.getValue() + "\n"); } Log.i("", "==========================================================="); InputStream inputStream = null; inputStream = httpResponse.getEntity().getContent(); if (inputStream != null) { result = convertInputStreamToString(inputStream); } else { result = "Did not work!"; } Log.i("UploadPhoto", result); } And this is the php server:
<?php $allowedExts = array("gif", "jpeg", "jpg", "png"); $temp = explode(".", $_FILES["file"]["name"]); $extension = end($temp); echo "Upload: " . $_FILES["file"]["name"] . "\n"; echo "Upload: " . $_FILES["file"]["type"] . "\n"; if ((($_FILES["file"]["type"] == "image/gif") || ($_FILES["file"]["type"] == "image/jpeg") || ($_FILES["file"]["type"] == "image/jpg") || ($_FILES["file"]["type"] == "image/pjpeg") || ($_FILES["file"]["type"] == "image/x-png") || ($_FILES["file"]["type"] == "image/png")) && in_array($extension, $allowedExts)) { echo "Passed First If"; if ($_FILES["file"]["error"] > 0) { echo "Return Code: " . $_FILES["file"]["error"] . "<br>"; } else { echo "Upload: " . $_FILES["file"]["name"] . "<br>"; echo "Type: " . $_FILES["file"]["type"] . "<br>"; echo "Size: " . ($_FILES["file"]["size"] / 1024) . " kB<br>"; echo "Temp file: " . $_FILES["file"]["tmp_name"] . "<br>"; if (file_exists("upload/" . $_FILES["file"]["name"])) { echo $_FILES["file"]["name"] . " already exists. "; } else { move_uploaded_file($_FILES["file"]["tmp_name"], "./" . $_FILES["file"]["name"]); echo "Stored in: " . "upload/" . $_FILES["file"]["name"]; } } } else { echo "Invalid file"; } ?> And this is what I have in the logcat:
07-14 22:57:05.720: I/HttpRequest Headers(14081): =========================================================== 07-14 22:57:05.720: I/(14081): =========================================================== 07-14 22:57:05.960: I/HttpResponse Headers(14081): =========================================================== 07-14 22:57:05.960: I/(14081): Date: Mon, 14 Jul 2014 20:59:38 GMT 07-14 22:57:05.960: I/(14081): Server: Microsoft-IIS/6.0 07-14 22:57:05.960: I/(14081): X-Powered-By: ASP.NET 07-14 22:57:05.960: I/(14081): X-Powered-By: PHP/5.3.5 07-14 22:57:05.960: I/(14081): Content-type: text/html 07-14 22:57:05.960: I/(14081): Content-Length: 63 07-14 22:57:05.960: I/(14081): =========================================================== 07-14 22:57:05.960: I/UploadPhoto(14081): Upload: image.pngUpload: application/octet-streamInvalid file As you can see the file get's to the server but does not pass any of the if conditions. I tried with httpPostRequest.setHeader("Content-type", "image/png;"); but it didn't work. Can you tell me what is the problem and how to fix it? Thanks.