Загрузить изображение на сервер PHP Android
Я сейчас теряюсь, пытаясь загрузить изображение на свой сервер. Я могу сделать снимок и узнать свое местоположение на устройстве 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>';
}
Файл трогается, но все равно остается пустым. Я что-то здесь упускаю? Пожалуйста, помогите, я пытался Я погуглил это, но получил другие результаты, которые мне не очень помогли.
2 answers
Вы можете проверить один очень хороший учебник здесь.
Также попробуйте выполнить следующий код,
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 .
в каталоге, в котором находится ваш скрипт, и посмотрите, правильно ли отображается загруженное изображение.