Я хочу отправить содержимое файла как org.apache.http.entity.mime.MultipartEntity
. Проблема в том, что у меня на самом деле нет файла, но только контент String
. Следующий тест отлично работает, где file
является java.io.File
указывающий на действительный PNG-файл:Отправка виртуального файла как MultipartEntity
MultipartEntity entity =
new MultipartEntity(HttpMultipartMode.BROWSER_COMPATIBLE);
entity.addPart("source", new StringBody("computer"));
entity.addPart("filename", new FileBody(file, "image/png"));
HttpPost httpPost = new HttpPost(URL);
httpPost.setEntity(entity);
HttpClient httpClient = new DefaultHttpClient();
final HttpResponse response = httpClient.execute(httpPost);
System.out.println(EntityUtils.toString(response.getEntity()));
Позже, я не буду иметь реальный файл, а только его содержание, как String
. Я много не знаю о кодировании (не сказать ничего), но если я пытаюсь тот же подход с временным файлом, который был создан следующим образом
String contents = FileUtils.readFileToString(new File(path),"UTF8");
File tmpFile = File.createTempFile("image", "png");
tmpFile.deleteOnExit();
InputStream in = new ByteArrayInputStream(contents.getBytes("UTF8"));
FileOutputStream out = new FileOutputStream(tmpFile);
org.apache.commons.io.IOUtils.copy(in, out);
The path
указывает на точно такой же формат PNG-файл, который преуспел в первом блоке кода, но на этот раз я получаю
Не удалось загрузить изображение; формат не поддерживается
ошибка с сервера. Я подозреваю, что имеет какое-то отношение к кодировке. Кто-нибудь видит, какую очевидную вещь я сделал не так?
, кажется, «содержание» является двоичным файлом, не то, что можно преобразовать в строку – morgano