@developercorey is right (gave you +1 👍), I just feel the need to explain why:
- The images you uploaded fall into a folder on the server
( String filepath = System.getenv("OPENSHIFT_DATA_DIR") + "images/"
- the path to the folder on the server). - Your displayed HTML
"<img src='"+filepath+"logo21.jpg'/>
sent to the client (user browser) with the filepath
url server. - Obviously, when a user browser tries to find an image using a server path that does not exist on the local computer, it will not work.
The best solution suggested by @developercorey is to add a new servlet or filter to send photos from the OPENSHIFT_DATA_DIR
folder:
- You will have a new url for the servlet serving your photo, something like
http://your-server/uploaded/
- And you can use
<img src="http://your-server/uploaded/logo21.jpg" />
in your jsp.
Here's a snippet from How-To: Downloading and serving files using Java servlets in OpenShift
import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.io.PrintWriter; import javax.activation.MimetypesFileTypeMap; import javax.servlet.ServletException; import javax.servlet.annotation.MultipartConfig; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.Part; @WebServlet(name = "uploads",urlPatterns = {"/uploads/*"}) @MultipartConfig public class Uploads extends HttpServlet { private static final long serialVersionUID = 2857847752169838915L; int BUFFER_LENGTH = 4096; protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { PrintWriter out = response.getWriter(); for (Part part : request.getParts()) { InputStream is = request.getPart(part.getName()).getInputStream(); String fileName = getFileName(part); FileOutputStream os = new FileOutputStream(System.getenv("OPENSHIFT_DATA_DIR") + fileName); byte[] bytes = new byte[BUFFER_LENGTH]; int read = 0; while ((read = is.read(bytes, 0, BUFFER_LENGTH)) != -1) { os.write(bytes, 0, read); } os.flush(); is.close(); os.close(); out.println(fileName + " was uploaded to " + System.getenv("OPENSHIFT_DATA_DIR")); } } protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String filePath = request.getRequestURI(); File file = new File(System.getenv("OPENSHIFT_DATA_DIR") + filePath.replace("/uploads/","")); InputStream input = new FileInputStream(file); response.setContentLength((int) file.length()); response.setContentType(new MimetypesFileTypeMap().getContentType(file)); OutputStream output = response.getOutputStream(); byte[] bytes = new byte[BUFFER_LENGTH]; int read = 0; while ((read = input.read(bytes, 0, BUFFER_LENGTH)) != -1) { output.write(bytes, 0, read); output.flush(); } input.close(); output.close(); } private String getFileName(Part part) { for (String cd : part.getHeader("content-disposition").split(";")) { if (cd.trim().startsWith("filename")) { return cd.substring(cd.indexOf('=') + 1).trim() .replace("\"", ""); } } return null; } }
source share