Я потерялся прямо сейчас, пытаясь загрузить изображение на свой сервер. Я могу сделать снимок и получить свое местоположение на устройстве Android. У меня есть следующий код для загрузки файла на сервер:
public Boolean postFunction(File image) { String tag = "postFunction"; HttpClient httpclient = new DefaultHttpClient(); HttpPost httppost = new HttpPost(UPLOAD_URL); try { MultipartEntity entity = new MultipartEntity(); entity.addPart("type", new StringBody("photo")); entity.addPart("data", new FileBody(image)); httppost.setEntity(entity); HttpResponse response = httpclient.execute(httppost); Log.i(tag, "picture was uploaded " + response.toString()); return true; } catch (ClientProtocolException e) { Log.e(tag, "Client: " + e.toString()); return false; } catch (IOException e) { Log.e(tag, "IO: " + e.toString()); return false; } }
Я передаю файл изображения этой функции, и он загружает. Однако ошибка лежит на сервере, я полагаю.
Вот мой PHP-код:
public function upload() { //$type = $this->input->post('type'); //$data = $this->input->post('data'); $base = $_REQUEST['data']; echo $base; // base64 encoded utf-8 string $binary = base64_decode($base); // binary, utf-8 bytes header('Content-Type: bitmap; charset=utf-8'); // print($binary); //$theFile = base64_decode($image_data); $file = fopen('./test.jpg', 'wb'); fwrite($file, $binary); fclose($file); echo '<img src=test.jpg>'; }
Файл будет затронут, но останется пустым. Я что-то упустил? Пожалуйста, помогите, я попробовал Googling, но придумал разные результаты, которые мне не очень помогли.
Здесь вы можете проверить один очень хороший учебник.
Также попробуйте следующий код,
public class TryprojectActivity extends Activity { InputStream is; int pic_count = 0; Bitmap bitmap=null; FileInputStream in1,in2,in3; BufferedInputStream buf; @Override public void onCreate(Bundle icicle) { super.onCreate(icicle); setContentView(R.layout.main); try { in1 = new FileInputStream("/sdcard/1.jpg"); } catch (FileNotFoundException e2) { // TODO Auto-generated catch block e2.printStackTrace(); } try { in2 = new FileInputStream("/sdcard/2.jpg"); } catch (FileNotFoundException e1) { // TODO Auto-generated catch block e1.printStackTrace(); } try { in3 = new FileInputStream("/sdcard/3.jpg"); } catch (FileNotFoundException e1) { // TODO Auto-generated catch block e1.printStackTrace(); } Bitmap bitmapOrg1 = BitmapFactory.decodeStream(in1); ByteArrayOutputStream bao1 = new ByteArrayOutputStream(); bitmapOrg1.compress(Bitmap.CompressFormat.JPEG, 90, bao1); byte [] imagearray1 = bao1.toByteArray(); String ba1=Base64.encode(imagearray1); Bitmap bitmapOrg2 = BitmapFactory.decodeStream(in2); ByteArrayOutputStream bao2 = new ByteArrayOutputStream(); bitmapOrg2.compress(Bitmap.CompressFormat.JPEG, 90, bao2); byte [] imagearray2 = bao2.toByteArray(); String ba2=Base64.encode(imagearray2); Bitmap bitmapOrg3 = BitmapFactory.decodeStream(in3); ByteArrayOutputStream bao3 = new ByteArrayOutputStream(); bitmapOrg3.compress(Bitmap.CompressFormat.JPEG, 90, bao3); byte [] imagearray3 = bao3.toByteArray(); String ba3=Base64.encode(imagearray3); List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(3); nameValuePairs.add(new BasicNameValuePair("image1",ba1)); nameValuePairs.add(new BasicNameValuePair("image2",ba2)); nameValuePairs.add(new BasicNameValuePair("image3",ba3)); try{ HttpClient httpclient = new DefaultHttpClient(); HttpPost httppost = new HttpPost("http://helpdesk.cispl.com/upload_file.php"); UrlEncodedFormEntity obj = new UrlEncodedFormEntity(nameValuePairs); obj.setChunked(true); httppost.setEntity(obj); HttpResponse response = httpclient.execute(httppost); HttpEntity entity = response.getEntity(); //is = entity.getContent(); httpclient.getConnectionManager().shutdown(); } catch(Exception e){ //CommonFunctions.writeLOG(ctx.getClass().toString(), e.toString()); //CommonFunctions.showToast(ctx, "Unable to post captured image file: " + //e.toString()); } }
Если вы используете apache / php на платформе на основе unix, убедитесь, что ваш сервер Apache имеет права на запись в каталог, в котором он пытается хранить файлы (в соответствии с вашим текущим кодом, тем же самым каталогом, в котором находится PHP-скрипт). В качестве быстрого теста сделайте chmod 0777 .
в директории, в которой находится ваш скрипт, и посмотрите, правильно ли загружено изображение.