2011-06-04 151 views
2

我有一些代码上传图像到服务器与struts2.After上传我想显示我的图像作为缩略图图像,并发送图像的路径,我已经上传到database.I混淆了如何使它可以工作上传图像并保存Url与Struts

这是我的Action Code.Cimande Action是ActionSupport的扩展。

package com.maetrika.jagatoko.controller; 

import java.io.File; 
import java.io.FilePermission; 

import javax.servlet.http.HttpServletRequest; 

import org.apache.commons.io.FileUtils; 
import org.blueoxygen.cimande.commons.CimandeAction; 

public class FileUpload extends CimandeAction{ 

    private File upload; 
    private String uploadContentType; 
    private String uploadFileName; 
    private String fileCaption; 

    private HttpServletRequest servletRequest; 

    File file; 

    public String execute() throws Exception{ 

     try{ 

     //String filePath=servletRequest.getRealPath("/"); 
      String filePath=servletRequest.getSession().getServletContext().getRealPath("/"); 
      File fileToCreate=new File(filePath, this.uploadFileName); 
      FileUtils.copyFile(upload, fileToCreate); 
     }catch (Exception e) { 
      e.printStackTrace(); 
      return INPUT; 
      // TODO: handle exception 
     } 



     return SUCCESS; 
    } 






    public File getUpload() { 

     return upload; 
    } 

    public void setUpload(File upload) { 
     this.upload = upload; 
    } 

    public String getUploadContentType() { 
     return uploadContentType; 
    } 

    public void setUploadContentType(String uploadContentType) { 
     this.uploadContentType = uploadContentType; 
    } 

    public String getUploadFileName() { 

     System.out.println("=======================" + uploadFileName); 
     return uploadFileName; 

    } 

    public void setUploadFileName(String uploadFileName) { 
     this.uploadFileName = uploadFileName; 
    } 

    public String getFileCaption() { 
     return fileCaption; 
    } 

    public void setFileCaption(String fileCaption) { 
     this.fileCaption = fileCaption; 
    } 



    public HttpServletRequest getServletRequest() { 
     return servletRequest; 
    } 



    public void setServletRequest(HttpServletRequest servletRequest) { 
     this.servletRequest = servletRequest; 
    } 



    public File getFile() { 
     return file; 
    } 



    public void setFile(File file) { 
     this.file = file; 
    } 


} 

我使用速度进行查看。 这是我上传图片的代码

<html> 
<head> 
</head> 

<body> 
    <form method="post" action="doUpload" enctype="multipart/form-data"> 
     <table border="0" cellpadding="2"> 
      <tr> 
       <td>Upload Gambar Produk</td> 
      </tr> 

      <tr> 
       <td><input type="file" name="upload"></td> 
      </tr> 

      <tr> 
       <td><input type="submit" value="submit"/> 
      </tr> 
     </table> 

    </form> 
</body> 
</html> 

我是Java的新手programming.Help我请..

+0

您可以尝试** [图像插件](https://cwiki.apache.org/S2PLUGINS/image-plugin.html)**(第三党)的Struts2。 – lschin 2011-06-12 04:55:23

+0

我们如何在android中为.net服务器做到这一点? – Kishore 2011-10-10 11:49:59

回答

2

你必须DATABSE仅存储图像的名字,以毫秒为单位的时间戳产生以避免重复项目

String fileName = myFile.getFileName(); 
    String extension = ""; 

    if (fileName != null && !fileName.equals("")) { 
     extension = fileName.substring(fileName.lastIndexOf("."), fileName.length()); 
    } 

    long longName = Calendar.getInstance().getTimeInMillis(); //date in miliseconds 
    String newFileName = longName + extension; 

现在您想要将图像存储在您的项目中以备将来使用。要做到这一点,让你的根文件夹,文件夹命名userimages,你的动作代码将看起来像:

String uploadFolder = "userimages"; 
String filePath = getServlet().getServletContext().getRealPath("/") + uploadFolder; 

/* Save file on the server */ 
    if (!fileName.equals("")) { 
     System.out.println("Server path:" + filePath); 

     //Create file 
     File fileToCreate = new File(filePath, newFileName); 

     //If file does not exists, create file 
     if (!fileToCreate.exists()) { 
      FileOutputStream fileOutStream = new FileOutputStream(fileToCreate); 
      fileOutStream.write(myFile.getFileData()); 
      fileOutStream.flush(); 
      fileOutStream.close(); 
     } 

    } 

现在,在你的JSP的显示出来的图像,你需要使用EL

东西这样的:

<img src="${pageContext.request.contextPath}/userimages/${imagename}"/> 

我希望帮你