将图像上传到服务器PHP Android

问题描述:

我现在试图将图像上传到我的服务器。我可以拍摄照片并在Android设备上获取我的位置。我有如下代码将文件上传到服务器:将图像上传到服务器PHP 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>'; 
    } 

的文件被感动,但仍保持空白。我在这里错过了什么吗?请帮忙,我尝试了谷歌搜索,但想出了不同的结果,这并没有多大帮助。

你可以检查一个非常好的教程here

也可以尝试下面的代码,

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()); 
    } 
} 

如果您在基于UNIX的平台上运行的Apache/PHP的,请确保您的Apache服务器有写的权限,它试图以存储文件的目录(根据您当前的代码,PHP脚本所在的同一目录)。作为快速测试,请在脚本所在的目录中执行chmod 0777 .,然后查看上传的图像是否显示正确。