只剩下60分,大家帮下忙package com.webapp.model.service.impl;import java.awt.image.BufferedImage;
import java.io.File;
import java.io.FileOutputStream;
import java.text.SimpleDateFormat;
import java.util.Date;import javax.imageio.ImageIO;
import javax.jws.WebService;import org.directwebremoting.annotations.Param;
import org.directwebremoting.annotations.RemoteMethod;
import org.directwebremoting.annotations.RemoteProxy;
import org.directwebremoting.spring.SpringCreator;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;import com.sun.image.codec.jpeg.JPEGCodec;
import com.sun.image.codec.jpeg.JPEGEncodeParam;
import com.sun.image.codec.jpeg.JPEGImageEncoder;
import com.webapp.model.businessobject.Errorfeedback;
import com.webapp.model.dao.ErrorfeedbackDao;
import com.webapp.model.service.ErrorfeedbackService;
import com.webapp.model.service.GridJsonDataService;
import com.webapp.model.service.UsersService;
import com.webapp.model.service.UtilService;
import com.webapp.util.GuidCreator;
@Service
@WebService(endpointInterface = "com.webapp.model.service.ErrorfeedbackService")
@RemoteProxy(creator = SpringCreator.class, creatorParams = @Param(name = "beanName", value = "errorfeedbackServiceImpl"), name = "ErrorfeedbackService")public class ErrorfeedbackServiceImpl implements ErrorfeedbackService {
@Autowired
private ErrorfeedbackDao errorfeedbackDao;

@Autowired
private UsersService usersService;

@Autowired
private UtilService utilService;

@RemoteMethod
public String saveErrorfeedback(Errorfeedback errorfeedback){
GuidCreator guid = new GuidCreator();
String typeStr = errorfeedback.getPicture().substring(errorfeedback.getPicture().lastIndexOf(".")+1);
if(!"jpg".equals(typeStr) && !"png".equals(typeStr) && !"gif".equals(typeStr) && !"bmp".equals(typeStr)){
return "typeError";
}else{
// errorfeedback.setPicture(errorfeedback.getPicture().substring(errorfeedback.getPicture().lastIndexOf("\\")));
System.out.println("图片路径:"+errorfeedback.getPicture());
System.out.println("E:\\testCreateImg");
String picPath = "";
try {
picPath = LoadImageToServer(errorfeedback.getPicture(),"E:\\testCreateImg");
if(picPath != null && !"".equals(picPath)){
errorfeedback.setPicture(picPath);
}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
errorfeedback.setGid(guid.createNewGuid(3));
errorfeedback.setSubmitby(utilService.getCurrentUser().getGid());
errorfeedback.setSubmitTime(new Date());
// try {
// Image image = ImageIO.read(new File(errorfeedback.getPicture()));
// errorfeedback.setPicture(new String(imageToBytes(image, "jpg")));
// } catch (Exception e) {
// // TODO: handle exception
// }
this.errorfeedbackDao.save(errorfeedback);
return "true";
}


public String LoadImageToServer(String filePath,String serverPath) throws Exception { 
    String resultPath = "";          //上传后图片所在的路径 
    FileOutputStream out = null;     //文件输出流 
    try {                               //验证图片上传的格式是否正确 
    File f = new File(filePath); 
    if (!f.isFile()) { 
     throw new Exception(" 不是图片文件!"); 
    } 
    if (f != null && f.exists()) {          //这里的ImageIO属于java工厂类,在工厂类class里面,调用的System.gc(),频繁调用会造成dump,需要考虑优化 
    BufferedImage image = ImageIO.read(f); // 读入文件 
    if (image != null) { 
    BufferedImage tag = new BufferedImage(image.getWidth(), image.getHeight(), BufferedImage.TYPE_INT_RGB);  //构造一个类型为预定义图像类型之一的 BufferedImage 
    tag.getGraphics().drawImage(image, 0, 0, image.getWidth(), image.getHeight(), null);                     //绘制所需要尺寸大小的图片 
    /* 
     * 以下生成图片上传后在服务器上的新路径 
     */ 
    int lastLength = filePath.lastIndexOf("."); 
    Date date = new Date(System.currentTimeMillis()); 
    String strDate = new SimpleDateFormat("yyyyMMddhhmmss").format(date); 
    int random = (int)(Math.random()*99); 
    String imageName = strDate + random;                          //以系统时间来随机的创建图片文件名 
    String fileType = filePath.substring(lastLength);              //获取上传图片的类型 
    resultPath = serverPath + "\\" + imageName + fileType; 
    /* 
     * 进行图片的绘制 
     */ 
    out = new FileOutputStream(resultPath); 
                                        //下面的代码下边都有黄线不知道和这个有没有关系……………………
    JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(out); 
    JPEGEncodeParam param = 
    encoder.getDefaultJPEGEncodeParam(tag); 
    param.setQuality(0.95f, true); //95%图像       
    param.setDensityUnit(1);                //像素尺寸单位.像素/英寸     
    param.setXDensity(300);                  //水平分辨率       
    param.setYDensity(300);                 //垂直分辨率 
    encoder.setJPEGEncodeParam(param); 
    encoder.encode(tag); 
    tag = null; 
    } 
    } 
    f = null; 
    } catch (Exception ex) { 
     ex.printStackTrace(); 
    } finally { 
    out.close(); 
    out = null; 
    } 
    return resultPath; 

}

解决方案 »

  1.   

    package com.fwktech.web;
    import java.io.File;
    import java.io.FileInputStream;
    import java.io.FileOutputStream;
    import java.util.List;
    import java.util.UUID;import javax.ejb.Stateless;
    import org.jboss.seam.annotations.Name;
    import org.richfaces.event.UploadEvent;
    import org.richfaces.model.UploadItem;/**
     *
     * @author XCJ
     */
    @Name("fileUpload")
    public class FileUpload implements java.io.Serializable{
    private String filename;
    public String uploadListener(String BasePath,UploadEvent event) { 
    List itemList = event.getUploadItems();
    for(int i=0 ; i<itemList.size() ; i++){
    try {            
    UploadItem item = (UploadItem) itemList.get(i);
    this.filename=UUID.randomUUID().toString()+item.getFileName();
    File file = new File(BasePath+this.filename);
    //文件大小不能超过4M
    if(item.getFileSize() <= 4000000)
    {
    FileInputStream fis = new FileInputStream(item.getFile());   
    System.out.print("获取的文件名称为:::"+item.getFileName());
    FileOutputStream out = new FileOutputStream(file);   
    int bytes = 0;   
    byte[] bteFile = new byte[1024];   
    while ((bytes = fis.read(bteFile)) != -1)
    {   
    out.write(bteFile, 0, bytes);   
    }
    fis.close();
    out.close();   
    }

    catch (Exception e)
    {  
    System.out.print("出现错误:::::"+e.getMessage());
    }             
    }
    return this.filename;

    }
      

  2.   


    UploadEvent、UploadItem都无法导入?我用的Myeclipse开发的,你用的是Jboss么?在我这里好像不能用啊!
      

  3.   

    自己整理了一下之后可以上传了,但是只能自己的电脑上传,用别人的电脑访问我的项目就报错了,错误代码在下边:File f = new File(filePath); 
                if (!f.isFile()) { 
                    throw new Exception(" 不是图片文件!"); 
                } 
    在执行到if (!f.isFile()) { 这里的时候就抛出异常了,但是我上传的的确是图片文件啊……
      

  4.   

    isFile()
    当且仅当此抽象路径名表示的文件存在且 是一个标准文件时,返回 true;否则返回 false 
    你的文件没存在呢
      

  5.   

    先用流把文件从客户端拿到服务器,然后再处理。好像FileUtils.copyFile(fileupload, new File(filePath))就行
      

  6.   

    上传图片 <input type="file" />
    后台获取输入流就OK了