Привет Я делаю приложение, которое отправляет изображение на сервер. Версия с устаревшими функциями Apache работает, но я не знаю, почему я не могу заставить обновленное решение работать. Кто-нибудь знает, где ошибка здесь?Отправить изображение с httpurlconnection
Новое решение: оно не дает ошибок в logcat, но когда я иду на сервер, ничего не было загружено. Сначала я подумал, что ошибка заключается в том, как я передал аргументы, но я пробовал несколько разных решений, например, используя Uri.builder, методы, которые кодировали параметры с помощью HashMap и stringBuilder, передавая эту строку ... и НИЧЕГО работал. Мне нужна помощь, это действительно сводит меня с ума
@Override
protected Void doInBackground(Void... params) {
ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
image.compress(Bitmap.CompressFormat.JPEG, 100, byteArrayOutputStream);
String encodedImage = Base64.encodeToString(byteArrayOutputStream.toByteArray(), Base64.DEFAULT);
try {
byteArrayOutputStream.flush();
byteArrayOutputStream.close();
}catch (IOException e){
}
HttpURLConnection connection;
try {
String urlSt = "http://phoenixcoding.tk/SavePicture.php";
URL url = new URL(urlSt);
connection = (HttpURLConnection) url.openConnection();
connection.setRequestMethod("POST");
/*Uri.Builder builder = new Uri.Builder()
.appendQueryParameter("name", name)
.appendQueryParameter("image", encodedImage);
String query = builder.build().getEncodedQuery();*/
OutputStream os = connection.getOutputStream();
BufferedWriter writer = new BufferedWriter(
new OutputStreamWriter(os, "UTF-8"));
writer.write("name=example&image=" + encodedImage);
writer.flush();
writer.close();
os.close();
connection.connect();
}catch (IOException e){
e.printStackTrace();
}
return null;
}
Бывший решение: он работает хорошо
@Override
protected Void doInBackground(Void... params) {
ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
image.compress(Bitmap.CompressFormat.JPEG, 100, byteArrayOutputStream);
String encodedImage = Base64.encodeToString(byteArrayOutputStream.toByteArray(), Base64.DEFAULT);
try {
byteArrayOutputStream.flush();
byteArrayOutputStream.close();
}catch (IOException e){
}ArrayList<NameValuePair> dataToSend = new ArrayList<NameValuePair>();
dataToSend.add(new BasicNameValuePair("name", name));
dataToSend.add(new BasicNameValuePair("image", encodedImage));
HttpClient client = new DefaultHttpClient();
HttpPost post = new HttpPost("http://phoenixcoding.tk/SavePicture.php");
try{
post.setEntity(new UrlEncodedFormEntity(dataToSend));
client.execute(post);
}catch (Exception e){
e.printStackTrace();
}
return null;
}
Файл SavePhoto.php:
<?php
$name = $_POST["name"];
$image = $_POST["image"];
$decodedImage = base64_decode("$image");
file_put_contents("pictures/" . $name . ".JPG", $decodedImage);
>