Я пытаюсь без каких-либо успехов загружать файлы в мой GCS через JSP.Загрузите файл через многостраничный запрос в облако хранилища Google с помощью Spring MVC
используя этот HTML:
<form enctype="multipart/form-data" action="/gcs/uploud/" method="POST">
Choose a file to upload: <input name="uploadedfile" type="file" /><br />
<input type="submit" value="Upload File" />
</form>
Контроллер:
@Controller
@RequestMapping("pages/gcs/*")
public class GoogleStorageController {
public static final boolean SERVE_USING_BLOBSTORE_API = false;
private final GcsService gcsService = GcsServiceFactory.createGcsService(new RetryParams.Builder()
.initialRetryDelayMillis(10)
.retryMaxAttempts(10)
.totalRetryPeriodMillis(15000)
.build());
private static final int BUFFER_SIZE = 2 * 1024 * 1024;
private static String BucketName = "XXXXXX";
@RequestMapping(value ="*/*",method = RequestMethod.POST)
public @ResponseBody String home(HttpServletRequest req, HttpServletResponse resp) {
GcsFileOptions instance = GcsFileOptions.getDefaultInstance();
GcsFilename fileName = getFileName(req);
GcsOutputChannel outputChannel;
try {
outputChannel = gcsService.createOrReplace(fileName, instance);
copy(req.getInputStream(), Channels.newOutputStream(outputChannel));
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return "successPage";
}
private GcsFilename getFileName(HttpServletRequest req) {
return new GcsFilename(BucketName, "media");
}
/**
* Transfer the data from the inputStream to the outputStream. Then close both streams.
*/
private void copy(InputStream input, OutputStream output) throws IOException {
try {
byte[] buffer = new byte[BUFFER_SIZE];
int bytesRead = input.read(buffer);
while (bytesRead != -1) {
output.write(buffer, 0, bytesRead);
bytesRead = input.read(buffer);
}
} finally {
input.close();
output.close();
}
}
}
Я получил файлы в моем ГКС, но заголовки не являются правильными.
У вас есть идея? Как мне обращаться с запросом HTTP Header? Как определить поле «Тип содержимого»?