AppEngine - Отправляйте файлы в Blobstore, используя HTTP
-
09-10-2019 - |
Вопрос
Я пытаюсь отправить файлы в Blobstore, используя HTTP-запросы.
Сначала я сделал кнопку, чтобы вызвать createuploadurl, чтобы получить URL-адрес загрузки.
Тогда я сделал клиента:
HttpClient httpClient = new DefaultHttpClient();
HttpPost httpPost = new HttpPost(URL_FROM_CREATEUPLOADURL);
httpPost.setEntity(new StringEntity("value1"));
HttpResponse httpResponse = httpClient.execute(httpPost);
Но у меня есть 2 проблемы:
В режиме Dev: когда я запускаю ответные ответы на IT-ответы, «должен позвонить один из Set * Blobstorage First».
Если я загрузку приложению: URL-адрес меняется каждый раз, когда я звоню, поэтому, когда я запускаю клиента IT-ответы «HTTP / 1.1 500 Ошибка сервера»
Что я делаю не так?
Решение 2
Видимо, сущность должна быть многоуровневой.
Это клиентский код, чтобы получить URL:
HttpClient httpClient = new DefaultHttpClient();
HttpPost httpPost = new HttpPost(myDomain/mayServlet);
HttpResponse httpResponse = httpClient.execute(httpPost);
Header[] headers = httpResponse.getHeaders(myHeader);
for (int i = 0; i < headers.length; i++) {
Header header = headers[i];
if(header.getName().equals(myHeader))
uploadUrl = header.getValue();
Это серверный код для возврата URL:
BlobstoreService blobstoreService = BlobstoreServiceFactory.getBlobstoreService();
String uploadUrl = blobstoreService.createUploadUrl(requestHandlerServlet);
resp.addHeader("uploadUrl", uploadUrl);
Это код загрузки клиента:
HttpClient httpClient = new DefaultHttpClient();
HttpPost httpPost = new HttpPost(uploadUrl);
MultipartEntity httpEntity = new MultipartEntity();
ContentBody contentBody = new FileBody(new File("filePath/fileName"));
httpEntity.addPart("fileKey", contentBody);
httpPost.setEntity(httpEntity);
HttpResponse httpResponse = httpClient.execute(httpPost);
так просто... :(
Другие советы
Похоже, вы пытаетесь сложить жесткий код URL загрузки. Вы не можете сделать это - вам нужно создать новый для каждого файла, который вы хотите загрузить.
Вам также необходимо убедиться, что вы загружаете файл в виде Multipart Message, а не использовать Formencoding или Roam Body. Я не знаком с API Java, но похоже, что вы устанавливаете сырой кузов запроса.