如何使用Retrofit将Base64字符串发布到我的服务器

时间:2016-09-08 08:59:25

标签: java php android retrofit retrofit2

我正在创建一个使用相机意图拍照的简单应用程序,然后将图片转换为base64字符串,并将其与图像名称一起发送到我的服务器。我不确定如何使用Retrofit发送图像,这个概念对我来说有点不清楚,并且没有意义,因为我是Java / Android App Development的新手

这是我到目前为止所拥有的。我已经查看了几个教程,但我真的不确定在哪里添加Retrofit代码以及如何使其工作。我还在我的服务器上包含了PHP代码。感谢

MainActivity.java

    public class MainActivity extends AppCompatActivity {

    private ImageButton ImageButton;
    private String encoded_string, image_name;
    private File file;
    private Uri file_uri;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        ImageButton = (ImageButton) findViewById(R.id.camera);
        ImageButton.setOnClickListener(new View.OnClickListener(){
            @Override
            public void onClick(View view){
                Intent i = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
                i.putExtra(MediaStore.EXTRA_OUTPUT,file_uri);
                startActivityForResult(i,10);
            }
        });
    }

    private void getFileUri() {
        image_name = "testing1234.jpeg";
        file = new File(Environment.getExternalStorageDirectory().getAbsoluteFile(), image_name);
        file_uri = Uri.fromFile(file);
    }

    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {

        if(requestCode == 10 && resultCode == RESULT_OK) {
        }
    }
}

PHP

<?php
header('Content-type : bitmap; charset=utf-8');

if(isset($_POST["encoded_string"])){
  $encoded_string = $_POST["encoded_string"];
  $device_name = $_POST["device_name"];

  /*$image_name = $device_name.'.jpg';*/
  $decoded_string = base64_decode($encoded_string);

  $path = 'images/'.$image_name;
  $file = fopen($path, 'wb');
  $is_written = fwrite($file, $decoded_string);
  fclose($file);

  $extracted = shell_exec("python test.py $image_name");
  echo $extracted;

 }

else {
  echo "Failed :(";
 }

?>

0 个答案:

没有答案