Отправить изображение post запросом

127
28 декабря 2019, 19:00

Нужно оправить изображение и текст пост запросом, на просторах интернета нашёл библиотеку https://github.com/kevinsawicki/http-request судя по приведённому примеру её использования всё должно работать, а у меня передаётся только текст, а изображение нет. Есть поток в котором передаётся post запрос:

public class PostThreadUrl extends AsyncTask<String, Void, Void> {
    HttpURLConnection urlConnection = null;
    BufferedOutputStream bos = null;
    @Override
    protected Void doInBackground(String... strings) {
        String urlString = "http://newsyou.000webhostapp.com/AddNews.php"; // URL to call
        HttpRequest request = HttpRequest.post("http://newsyou.000webhostapp.com/AddNews.php");
        request.part("text", strings[0]);
        request.part("title", strings[1]);
        request.part("id", strings[2]);
        if(!strings[3].equals("")) {
            String path="";
            String name="";
            request.part("img", new File(strings[3]));
            request.part("src", strings[3]);
        }
        int status = request.code();
        return null;
    }
}

strings[3]- это путь к файлу который надо передать("/storage/sdcard1/Pictures/Screenshots/Screenshot_2018-10-15-13-32-18.png"). Может я как-то не так использую класс File для загрузки в HttpRequest? Или ошибка на стороне сервера? Хотя передача через JQuery на сайте работает. Код для получения данных php:

<?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']!=""){
        echo $_FILES['img']['name'];
        $extension = strtolower(substr(strrchr($_FILES['img']['name'], '.'), 1));
        echo $extension;
        $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'].")";
    $result = mysqli_query($link, $query) or die("Ошибка " . mysqli_error($link)); 
    mysqli_close($link);
?>
Answer 1
public class PostThreadUrl extends AsyncTask<String, Void, Void> {
    @Override
    protected Void doInBackground(String... strings) {
        String urlString = "http://newsyou.000webhostapp.com/AddNews.php"; // URL to call
        MultipartEntityBuilder builder = MultipartEntityBuilder.create();
        ContentType TextContentType = ContentType.create("text/html",Charset.forName("UTF-8"));
        builder.setCharset(Charset.forName("UTF-8"));
        builder.addTextBody("text", strings[0],TextContentType);
        builder.addTextBody("title", strings[1],TextContentType);
        builder.addTextBody("id", strings[2],TextContentType);
        if(!strings[3].equals("")) {
            File file = new File(strings[3]);
            ContentType fileContentType = ContentType.create("image/jpeg");
            String fileName = file.getName();
            builder.addBinaryBody("img", file, fileContentType, fileName);
            builder.addTextBody("src", strings[3],TextContentType);
        }
        HttpEntity entity = builder.build();
        HttpPost request = new HttpPost(urlString);
        request.setEntity(entity);
        HttpClient client = new DefaultHttpClient();
        try {
            client.execute(request);
        } catch (IOException e) {
            e.printStackTrace();
        }
        return null;
    }
}
READ ALSO
Ищу любой проект по vue js open source

Ищу любой проект по vue js open source

Ищу любой проект по vue js есть опыт в написание на vue js модулей статистики готов работать за спасибо если у вас интересная идея причина довольно...

150
Ошибка Cannot modify header information - headers already sent [дубликат]

Ошибка Cannot modify header information - headers already sent [дубликат]

Я новичок и я делаю проект с тестированием и столкнулся с такой ошибкой

125
Метод gzcompress из PHP в C#

Метод gzcompress из PHP в C#

Каким методом в C# можно заменить метод сжатия строки из PHP

189
Не выводится the_excerpt() поста в WordPress

Не выводится the_excerpt() поста в WordPress

Вот код вывода трех последних постовУ меня много рубрик, но этот код выводит последние три добавленные посты не зависимо в каких рубриках...

125