How to transfer an image uploaded to an ImageView from a post device with a request to the server. There is a stream that sends text to the server:
public class PostThreadUrl extends AsyncTask<JSONObject, Void, Void> { HttpURLConnection urlConnection = null; BufferedOutputStream bos = null; @Override protected Void doInBackground(JSONObject... jsonObjects) { String urlString = "http://newsyou.000webhostapp.com/AddNews.php"; // URL to call String urlParameters = null; try { urlParameters = "title=" + jsonObjects[0].getString("title") + "&text=" + jsonObjects[0].getString("text") + "&id=" + jsonObjects[0].getString("id"); } catch (JSONException e) { e.printStackTrace(); } byte[] postData = urlParameters.getBytes( Charset.defaultCharset() ); int postDataLength = postData.length; String request = urlString; URL url = null; try { url = new URL( request ); } catch (MalformedURLException e) { e.printStackTrace(); } HttpURLConnection conn= null; try { conn = (HttpURLConnection) url.openConnection(); } catch (IOException e) { e.printStackTrace(); } conn.setDoOutput( true ); conn.setInstanceFollowRedirects( false ); try { conn.setRequestMethod( "POST" ); } catch (ProtocolException e) { e.printStackTrace(); } conn.setRequestProperty( "Content-Type", "application/x-www-form-urlencoded"); conn.setRequestProperty( "charset", "utf-8"); conn.setRequestProperty( "Content-Length", Integer.toString( postDataLength )); conn.setUseCaches( false ); DataOutputStream wr = null; try { wr = new DataOutputStream( conn.getOutputStream()); } catch (IOException e) { e.printStackTrace(); } try { wr.write( postData ); } catch (IOException e) { e.printStackTrace(); } InputStream inputStream= null; try { inputStream = conn.getInputStream(); } catch (IOException e) { e.printStackTrace(); } InputStreamReader isr =new InputStreamReader(inputStream); BufferedReader bRead=new BufferedReader(isr); StringBuilder sBuilder=new StringBuilder(); String line; try { while ((line = bRead.readLine()) != null) { sBuilder.append(line); } }catch (Exception e){ } return null; } } The image is loaded in ImageView:
public class NewsReaderActivity extends AppCompatActivity { private final int Pick_image = 1; private ImageView imgAdd; private String ImagePath=""; private File finalFile; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_news_reader); imgAdd = findViewById(R.id.imageAdd); Button btnLoadImg =findViewById(R.id.LoadImgBtn); final Intent intent = this.getIntent(); btnLoadImg.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) {//ΡΠΎΠ±ΡΡΠΈΠ΅ ΠΏΡΠΈ ΠΊΠΎΡΠΎΡΠΎΠΌ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ ΠΏΠΎΠΈΡΠΊ ΠΊΠ°ΡΡΠΈΠ½ΠΊΠΈ Intent photoPickerIntent = new Intent(Intent.ACTION_PICK); photoPickerIntent.setType("image/*"); startActivityForResult(photoPickerIntent, Pick_image); } }); ((Button)findViewById(R.id.AddNewsBtn)).setOnClickListener(new View.OnClickListener() {//cΠΎΠ±ΡΡΠΈΠ΅ ΠΏΡΠΈ ΠΊΠΎΡΠΎΡΠΎΠΌ ΠΏΡΠΎΠΈΡΡ
ΠΎΠ΄ΠΈΡ Π·Π°Π³ΡΡΠ·ΠΊΠ° Π½Π° ΡΠ΅ΡΠ²Π΅Ρ @Override public void onClick(View v) { TextView Title=findViewById(R.id.titleAdd); TextView Text=findViewById(R.id.textAdd); if((!Title.getText().toString().equals(""))&&(!Text.getText().toString().equals(""))){ try { Integer id=intent.getIntExtra("id",0); JSONObject jsonObject = new JSONObject(); jsonObject.put("title", Title.getText().toString()); jsonObject.put("text", Title.getText().toString()); jsonObject.put("id", id.toString()); new PostThreadUrl().execute(jsonObject); } catch (JSONException e) { e.printStackTrace(); } }else{ Toast.makeText(NewsReaderActivity.this,"ΠΠ°ΠΏΠΎΠ»Π½ΠΈΡΡΠ΅ Π²ΡΠ΅ ΡΠ΅ΠΊΡΡΠΎΠ²ΡΠ΅ ΠΏΠΎΠ»Ρ",Toast.LENGTH_SHORT).show(); } } }); } public String getRealPathFromURI(Uri uri) { Cursor cursor = getContentResolver().query(uri, null, null, null, null); cursor.moveToFirst(); int idx = cursor.getColumnIndex(MediaStore.Images.ImageColumns.DATA); return cursor.getString(idx); } @Override protected void onActivityResult(int requestCode, int resultCode, Intent imageReturnedIntent) { super.onActivityResult(requestCode, resultCode, imageReturnedIntent); switch(requestCode) { case Pick_image: { if (resultCode == RESULT_OK) { try { final Uri imageUri = imageReturnedIntent.getData(); final InputStream imageStream = getContentResolver().openInputStream(imageUri); final Bitmap selectedImage = BitmapFactory.decodeStream(imageStream); finalFile = new File(getRealPathFromURI(imageUri)); ImagePath=finalFile.toString();//ΠΡΡΡ ΠΊ ΠΊΠ°ΡΡΠΈΠ½ΠΊΠ΅ imgAdd.setImageBitmap(selectedImage); } catch (FileNotFoundException e) { e.printStackTrace(); } } } } } } A php file that accepts a post request:
<?php function getRandomFileName($path, $extension=''){ $extension = $extension ? '.' . $extension : ''; $path = $path ? $path . '/' : ''; do { $name = md5(microtime() . rand(0, 9999)); $file = $path . $name . $extension; } while (file_exists($file)); return $name; } $path = 'img'; $target=''; if($_POST['src']!=""){ $extension = strtolower(substr(strrchr($_FILES['img']['name'], '.'), 1)); $filename = getRandomFileName($path, $extension); $target = $path . '/' . $filename . '.' . $extension; move_uploaded_file($_FILES['img']['tmp_name'], $target); } $host = 'localhost'; $database = 'NewsBase'; $user = 'mysql'; $password = 'mysql'; $link = mysqli_connect($host, $user, $password, $database) or die("ΠΡΠΈΠ±ΠΊΠ° " . mysqli_error($link)); $query ="INSERT INTO `News`(`id`, `src`, `title`, `Text`, `a_id`) VALUES (null,'".$target."','".$_POST['title']."','".$_POST['text']."',".$_POST['id'].")"; echo $query; $result = mysqli_query($link, $query) or die("ΠΡΠΈΠ±ΠΊΠ° " . mysqli_error($link)); mysqli_close($link); ?>