1

Я пытаюсь без каких-либо успехов загружать файлы в мой 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? Как определить поле «Тип содержимого»?

ответ

0

Вы не устанавливаете GcsFileOptions в createOrReplace(), поэтому я ожидаю, что ваш загруженный объект будет иметь полностью значения по умолчанию. Попробуйте примерно следующее:

 GcsFileOptions.Builder options = new GcsFileOptions.Builder(); 
     options.mimeType("text/plain-or-whatever") 
     outputChannel = gcsService.createOrReplace(fileName, options.build(), instance); 

 Смежные вопросы

  • Нет связанных вопросов^_^