Загрузка GAE с использованием API Blobstore не работает, сообщение об ошибке - Не удалось загрузить ресурс: сервер ответил со статусом 500 () - PullRequest
0 голосов
/ 09 ноября 2018

Код (использующий API Blobstore для загрузки файлов) в приложении GAE перестал работать 3 дня назад на производстве. Код, используемый для загрузки файла, который работал ранее в течение последних многих лет.

String key = "AMIfv96IYjdE0eMB2m12zFW....";
BlobKey blobKey = new BlobKey(key);
blobstoreService.serve(blobKey, res);

Этот код начал выдавать ошибку «Не удалось загрузить ресурс: сервер ответил со статусом 500 ()» за последние 3 дня.

2-й подход Мы также попытались использовать GCS API вместо

Blob blob = storage.get(BlobId.of(bucketName, srcFilename));
GcsFilename fileName = new GcsFilename(blob.getBucket(), blob.getName());
GcsInputChannel readChannel = gcsService.openPrefetchingReadChannel(fileName, 0, BUFFER_SIZE);
copy(Channels.newInputStream(readChannel), res.getOutputStream());

С этим кодом мы получаем ошибку

java.lang.RuntimeException Ошибка: PrefetchingGcsInputChannelImpl [имя файла = GcsFilename (rnlgpc-документы-foldered, случаи / Case-5710601580969984 / L2FwcGhvc3RpbmdfZ2xvYmFsL2Jsb2JzL0FFbkIyVXJ6djNmRnc4aFlNZHBvMmlqYW5fd2FNWVJ3R29aaGR3WVBXcmJLWk9RN1lDVUNnN1VLcTV6dFBTeWl2OWxWellyNVZPWTJ1dEdWZFVlYnhmSC12S2pkaEhxeFZzbFNIUzNrZndobEpZeGd1VjVoc0lBLlVZMi13QjJmaFZpYkZzWUw), blockSizeBytes = 2097152, замкнут = ложно, eofHit = ложь, длина = -1, fetchPosition = 0, pendingFetch=com.google.appengine.tools.cloudstorage.oauth.OauthRawGcsService$2@370bdb99, retryParams = RetryParams [requestTimeoutMillis = 30000, requestTimeoutRetryFactor = 1.2, maxRempA0 , initialRetryDelayMillis = 10, maxRetryDelayMillis = 32000, retryDelayBackoffFactor = 2.0, totalRetryPeriodMillis = 15000]]: Неизвестная причина исключения ExtionException

3-й подход Затем мы попытались использовать Cloud Storage JSON API

Storage storage = StorageOptions.getUnauthenticatedInstance().getService();
String bucketName = "XXXX";
String srcFilename = gsObjectName.substring(25, gsObjectName.length());
// Get specific file from specified bucket
Blob blob = storage.get(BlobId.of(bucketName, srcFilename));
String link = blob.getMediaLink();
res.sendRedirect(link);

С помощью этого кода мы можем загрузить файл, для которого у нас есть «gsObjectName».

Для старых файлов у нас есть только ключи BLOB-объектов. Как мы можем загрузить эти документы и может ли blobstore api (оригинальный подход) снова работать, поскольку он еще не устарел?

Спасибо !! Aadhaar

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...