El problema que tengo es que solo puedo cargar imágenes desde el directorio de proyectos ( /home/usr/workspace/project/~from here~
).
Por razones obvias, esto no funcionará cuando vaya a publicar esta función. No estoy seguro de dónde debo configurar esto de manera diferente. Ayúdame a desbordar la pila, eres mi única esperanza.
@RequestMapping("/saveImage") public String getPreparedUploadUrl(@RequestParam File fileName, HttpSession session) throws IOException, InterruptedException { java.util.Date expiration = new java.util.Date(); long msec = expiration.getTime(); msec += 1000 * 60 * 60; // Add 1 hour. expiration.setTime(msec); ObjectMetadata md = new ObjectMetadata(); md.setContentType("image/jpg"); md.setContentLength(fileName.length()); md.setHeader(fileName.getName(), fileName.getAbsolutePath()); File file = new File(fileName.getAbsolutePath()); FileInputStream fis = new FileInputStream(file); byte[] content_bytes = IOUtils.toByteArray(fis); String md5 = new String(Base64.encodeBase64(DigestUtils.md5(content_bytes))); md.setContentMD5(md5); GeneratePresignedUrlRequest generatePresignedUrlRequest = new GeneratePresignedUrlRequest("wandering-wonderland- images", fileName.getName()); generatePresignedUrlRequest.setMethod(HttpMethod.PUT); generatePresignedUrlRequest.setExpiration(expiration); URL s = s3client.generatePresignedUrl(generatePresignedUrlRequest); try { UploadObject(s, fileName); } catch (IOException e) { e.printStackTrace(); } session.setAttribute("saved", fileName + " has been saved!"); return "redirect:/saved3"; } // working, don't f@$# with it! public static void UploadObject(URL url, File file) throws IOException, InterruptedException { HttpURLConnection connection=(HttpURLConnection) url.openConnection(); InputStream inputStream = new FileInputStream(file.getAbsolutePath()); connection.setDoOutput(true); connection.setRequestMethod("PUT"); OutputStream out = connection.getOutputStream(); byte[] buf = new byte[1024]; int count; int total = 0; long fileSize = file.length(); while ((count =inputStream.read(buf)) != -1) { if (Thread.interrupted()) { throw new InterruptedException(); } out.write(buf, 0, count); total += count; int pctComplete = new Double(new Double(total) / new Double(fileSize) * 100).intValue(); System.out.print("\r"); System.out.print(String.format("PCT Complete: %d", pctComplete)); } System.out.println(); out.close(); inputStream.close(); int responseCode = connection.getResponseCode(); System.out.println("Service returned response code " + responseCode); }