В коде Android Studio я открываю камеру и делаю снимок, который могу сохранить. Однако затем я хочу отправить эту картинку JPG на мой код PHP. У меня есть сортировка для отправки строк на PHP, однако, когда я пытаюсь отправить изображение, это не работает. Из-за этого я закодировал свое изображение в строку base64, чтобы попытаться отправить его таким образом, но он все еще не работает.
Java код:
public class celebs extends AsyncTask<String, String, String> {
@Override
protected void onPreExecute() {
super.onPreExecute();
}
@Override
protected void onPostExecute(String s) {
super.onPostExecute(s);
//Toast.makeText(getBaseContext(),s,Toast.LENGTH_SHORT).show();
}
@RequiresApi(api = Build.VERSION_CODES.O)
@SuppressLint("WrongThread")
@Override
protected String doInBackground(String... params) {
sharedPreferenceConfig = new SharedPreferenceConfig(getApplicationContext());
Intent intent = getIntent();
File Image = (File) intent.getSerializableExtra("Image");
String encode = encodeFileToBase64Binary(Image);
try {
String data = URLEncoder.encode("Image", "UTF-8") + "=" +
URLEncoder.encode(String.valueOf(Image), "UTF-8");
//URL url = new URL("http://192.168.43.35:80/App/pythonconnect.php?" + data);
URL url = new URL("http://10.167.120.26/App/pythonconnect.php?" + encode);
System.out.println("1");
URLConnection con = url.openConnection();
System.out.println("2");
con.setDoOutput(true);
System.out.println("3");
BufferedReader read = new BufferedReader(new InputStreamReader(con.getInputStream()));
StringBuilder s = new StringBuilder();
String line = null;
while ((line = read.readLine()) != null) {
s.append(line);
}
final String result = s.toString();
System.out.println(result);
}
catch (Exception e) {
e.printStackTrace();
}
return null;
}
}
@RequiresApi(api = Build.VERSION_CODES.O)
private static String encodeFileToBase64Binary(File file){
String encodedfile = null;
try {
FileInputStream fileInputStreamReader = new FileInputStream(file);
byte[] bytes = new byte[(int)file.length()];
fileInputStreamReader.read(bytes);
encodedfile = Base64.getEncoder().encodeToString(bytes);
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return encodedfile;
}
ОШИБКА:
W/System.err: java.io.FileNotFoundException: http://192.168.43.35:80/App/pythonconnect.php?Image=%2F9j%2F4QFnRXhpZgAATU0AKgAAAAgABwEAAAQAAAABAAAPwAEBAAQAAAABAAAL0AEPAAIAAAAHAAAAYgEQAAIAAAAJAAAAaQESAAMAAAABAAMAAAEyAAIAAAAUAAAAcodpAAQAAAABAAAAhgAAAABHb29nbGUAUGl4ZWwgM2EAMjAyMDowMzoxNSAxNjozODoyMwAADYKaAAUAAAABAAABKIKdAAUAAAABAAABMIgnAAMAAAABAEsAAJAQAAIAAAAHAAABOJIBAAoAAAABAAABP5ICAAUAAAABAAABR5IGAAUAAAABAAABT5IJAAMAAAABAAAAAJIKAAUAAAABAAABV5KQAAIAAAAENjY0AKACAAQAAAABAAAPwKADAAQAAAABAAAL0KQMAAMAAAABAAEAAAAAAAAAmCMDO5rKAAAAALQAAABkKzAwOjAwAP%2F%2F%2FWgAAABkAAAAqQAAAGQAAABjAAAD6AAAEVgAAAPo%2F%2BAAEEpGSUYAAQEAAAEAAQAA%2F9sAQwACAQEBAQECAQEBAgICAgIEAwICAgIFBAQDBAYFBgYGBQYGBgcJCAYHCQcGBggLCAkKCgoKCgYICwwLCgwJCgoK%2F9sAQwECAgICAgIFAwMFCgcGBwoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK%2F%2BICZElDQ19QUk9GSUxFAAEBAAACVAAAAAAEAAAAbW50clJHQiBYWVogB%2BAADAAIAAkAJgAcYWNzcAAAAAAAAAAAR09PRwAAAAAAAAAAAAAAAAAAAAAAAPbWAAEAAAAA0y1HT09HdeGmsTw0N2MQyKtmBjKiigAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALZGVzYwAAAQgAAABAY3BydAAAAUgAAABad3RwdAAAAaQAAAAUYmtwdAAAAbgAAAAUclhZWgAAAcwAAAAUZ1hZWgAAAeAAAAAUYlhZWgAAAfQAAAAUclRSQwAAAggAAAAgY2hhZAAAAigAAAAsYlRSQwAAAggAAAAgZ1RSQwAAAggAAAAgbWx1YwAAAAAAAAABAAAADGVuVVMAAAAkAAAAHABzAFIARwBCACAASQBFAEMANgAxADkANgA2AC0AMgAuADEAAG1sdWMAAAAAAAAAAQAAAAxlblVTAAAAPgAAABwAQwBvAHAAeQByAGkAZwBoAHQAIAAoAGMAKQAgADIAMAAxADYAIABHAG8AbwBnAGwAZQAgAEkAbgBjAC4AAAAAWFlaIAAAAAAAAPNRAAEAAAABFsxYWVogAAAAAAAAAAAAAAAAAAAAAFhZWiAAAAAAAABvoAAAOPUAAAOQWFlaIAAAAAAAAGKXAAC3hwAAGNlYWVogAAAAAAAAJJ8AAA%2BEAAC2w3BhcmEAAAAAAAMAAAACZmYAAPKnAAANWQAAE9AAAApbc2YzMgAAAAAAAQxCAAAF3v%2F%2F8ycAAAeTAAD9kP%2F%2F%2B6P%2F%2F%2F2kAAAD3AAAwG7%2FwAARCAvQD8ADASIAAhEBAxEB%2F8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL%2F8QAtRAAAgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4%2BTl5ufo6erx8vP09fb3%2BPn6%2F8QAHwEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL%2F8QAtREAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSExBhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3%2BPn6%2F9oADAMBAAIRAxEAPwD8aoLF7hZDf3ckkxUhgDxgAdB2%2FLvT2VrYHex2YxjOec%2B1Kv2K2v8Azri3Bkf%2FAFeAcH05%2FwA%2FrVd9Se3vlhuYf3RYZYLkk%2BmenT9a%2BgOcuvHIrZhnYqVC9Og4%2FwAKSTMNu9vHKGjaT5uPbp%2Bn%2FwBao3ubkt%2FooyJGG4txge3qeB%2FOrK2ub1be225IJchzg%2F8A1v8ACgDP1BEEK2guiYiwUAHj%2FP6GrNwzwwswQO4XsvYD9fSporpEZkW2WN8YcFMkn15%2Fzz9KqXlzqcKb7a3VmUgMzdMZpbDTsKoEnzttU7Rjd%2BVWklnhfYk5VsdQaYlstzHIphY3EgGJFx8oHtRBZyWKorZ%2BRgAzAZH5ewpjkOlu7V7ZIi0geBmO12JVzx6%2Buf0ot7xdRsk1CKb96s5YID0XGMdOOp57fSrP2bTJpFluZAwB6bTkn8KbthVtoDLEONynB6cfyoJImRLu7kvchVRQrEjG4jHI%2FwA55zT7O3uJlluJioiVMonGScdOe3T8%2FwAaR7aF1dVDbW%2B7uPHtmpUE1nch7l%2F3RTDQgDH1%2FwDrUAVkuCoVCASenOKlg1S4j02XTIxtEkqsxDZ3Y6dfqeKLC2%2B0281xKq5jcBVyckE9ffHGfr3ogjsYtTFw23oB1wTzXQVEijtbd7KWwWUK8pGVVeD7EjoOP%2F15qV7FoAV%2B1ENgEYOc%2FwCee9OeNRcLHCg%2FeZLEY4%2FxpGggs7uMXV9kSLjaU6dx0%2Fz2oKK%2BoXUEbx2NzF5izDBcrkcfyz%2BVJc3t5YwiGyuAqLhQW5wMdvfp%2BXtWi9jHI6XjIhgRsFANxJx7%2FUfrSSJomoRMsoUIWICE9uCCT%2FkVoZlCWa0S2tLm3tw4VcmMDkkjkjB9%2B1aKzxx28sdhaCJJySUbBPJz%2Fj%2BdVrwW9jcxJAu9Ix8jp0wfpVld0w3ISQB19qlRsBVVXjlVUyN6fNkDgU6dp4UjhNw5NudqxDt3%2FH%2BtNkvbaeVo4ZQzRHB24x2%2FOnMJEaN4pMSPyXBPGPapMx0kEczI7XDCTIwhb7nA%2FKn3xtYHCW8geVF%2BYYIG4%2Bmaq3Nnbeetzjb8w3Ko4xj26VavVtSEMMZVg4JYvnPt04oAZNFaarMun3kq7wMIAuNxPb3zmrEFtOZR5t2FaOJgdxIJ%2FwDr5%2FyKSXdviME6xZO4lRg4Hv8A4eopggaOQG6uQzkkqNpAxTNCG1M8EACQSMATyF44J5qxLFdWmniRZFd5zvIPHHHH%2FwBYUkokuV2QyFQhG7CggjPP%2BfpU7WqSIGYgHPykihIDJsRb2btLNGqTFyWfcTkEnI5%2Bv6mrl0mJh9hsi5dDlnI9%2FwDPp1qW6s4zEGkUMBy2cEU%2B0kt5FeJSY227UYDOcke2OlZAQ2VxJfCRHYmUITnrz6%2B%2FSobqb7OY3v4gVBO3K53ZpNOt5La8mfljuI%2BY%2FpirbGOaYTXMYO1sqMELn8PxquYhqxJdWZ1Bopbm02KqZDYySCOf0pbxbGKLdESCW6Fun1z71De3E8Ej3M%2F%2BpH3FiXBX%2FPp%2BVS2lk01k1zC6FmYAeZggf5%2Fzmr3EKst8EWJrf92vysVGenr%2BlS4tonLRoFcqTgcH%2FPWnQfbYUf7ZcMTgAc8ADt%2FL8hUFub2GARJJkmT77L2yB6UgHm3tZpEm853cEF
at com.android.okhttp.internal.huc.HttpURLConnectionImpl.getInputStream(HttpURLConnectionImpl.java:255)
at com.example.wit.Celeb$celebs.doInBackground(Celeb.java:99)
at com.example.wit.Celeb$celebs.doInBackground(Celeb.java:51)
at android.os.AsyncTask$3.call(AsyncTask.java:378)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:289)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
at java.lang.Thread.run(Thread.java:919)
Мой php код:
<?php
if (isset($_POST["Image"])) {
"include connection.php";
$image = $_POST["Image"];
$message = exec("/Applications/XAMPP/xamppfiles/htdocs/App/database.py 2>&1 '$imagestr'");
echo($message);
}
?>