java图片上传,java图片上传代码

发布时间:2023-01-09

本文目录一览:

  1. java 中如何向服务器上传图片
  2. 用java怎么上传图片到项目指定的文件夹
  3. java怎样上传图片(写个例子谢谢);

java 中如何向服务器上传图片

我们使用一些已有的组件帮助我们实现这种上传功能。 常用的上传组件:

  • Apache 的 Commons FileUpload
  • JavaZoom的UploadBean
  • jspSmartUpload 以下,以FileUpload为例讲解
  1. 在jsp端
<form id="form1" name="form1" method="post" action="servlet/fileServlet" enctype="multipart/form-data">

要注意 enctype="multipart/form-data"。 然后只需要放置一个file控件,并执行submit操作即可:

<input name="file" type="file" size="20">
<input type="submit" name="submit" value="提交">
  1. web端 核心代码如下:
public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    request.setCharacterEncoding("UTF-8");
    DiskFileItemFactory factory = new DiskFileItemFactory();
    ServletFileUpload upload = new ServletFileUpload(factory);
    try {
        List items = upload.parseRequest(request);
        Iterator itr = items.iterator();
        while (itr.hasNext()) {
            FileItem item = (FileItem) itr.next();
            if (item.isFormField()) {
                System.out.println("表单参数名:" + item.getFieldName() + ",表单参数值:" + item.getString("UTF-8"));
            } else {
                if (item.getName() != null && !item.getName().equals("")) {
                    System.out.println("上传文件的大小:" + item.getSize());
                    System.out.println("上传文件的类型:" + item.getContentType());
                    System.out.println("上传文件的名称:" + item.getName());
                    File tempFile = new File(item.getName());
                    File file = new File(sc.getRealPath("/") + savePath, tempFile.getName());
                    item.write(file);
                    request.setAttribute("upload.message", "上传文件成功!");
                } else {
                    request.setAttribute("upload.message", "没有选择上传文件!");
                }
            }
        }
    } catch (FileUploadException e) {
        e.printStackTrace();
    } catch (Exception e) {
        e.printStackTrace();
        request.setAttribute("upload.message", "上传文件失败!");
    }
    request.getRequestDispatcher("/uploadResult.jsp").forward(request, response);
}

用java怎么上传图片到项目指定的文件夹

你的意思是拷贝吗,还是上传到服务器什么的?

import java.io.*;
/**
 * 复制文件夹或文件夹
 */
public class CopyDirectory {
    // 源文件夹
    static String url1 = "f:/photos";
    // 目标文件夹
    static String url2 = "d:/tempPhotos";
    public static void main(String args[]) throws IOException {
        // 创建目标文件夹
        (new File(url2)).mkdirs();
        // 获取源文件夹当前下的文件或目录
        File[] file = (new File(url1)).listFiles();
        for (int i = 0; i < file.length; i++) {
            if (file[i].isFile()) {
                // 复制文件
                copyFile(file[i], new File(url2 + file[i].getName()));
            }
            if (file[i].isDirectory()) {
                // 复制目录
                String sourceDir = url1 + File.separator + file[i].getName();
                String targetDir = url2 + File.separator + file[i].getName();
                copyDirectiory(sourceDir, targetDir);
            }
        }
    }
    // 复制文件
    public static void copyFile(File sourceFile, File targetFile) throws IOException {
        // 新建文件输入流并对它进行缓冲
        FileInputStream input = new FileInputStream(sourceFile);
        BufferedInputStream inBuff = new BufferedInputStream(input);
        // 新建文件输出流并对它进行缓冲
        FileOutputStream output = new FileOutputStream(targetFile);
        BufferedOutputStream outBuff = new BufferedOutputStream(output);
        // 缓冲数组
        byte[] b = new byte[1024 * 5];
        int len;
        while ((len = inBuff.read(b)) != -1) {
            outBuff.write(b, 0, len);
        }
        // 刷新此缓冲的输出流
        outBuff.flush();
        // 关闭流
        inBuff.close();
        outBuff.close();
        output.close();
        input.close();
    }
    // 复制文件夹
    public static void copyDirectiory(String sourceDir, String targetDir) throws IOException {
        // 新建目标目录
        (new File(targetDir)).mkdirs();
        // 获取源文件夹当前下的文件或目录
        File[] file = (new File(sourceDir)).listFiles();
        for (int i = 0; i < file.length; i++) {
            if (file[i].isFile()) {
                // 源文件
                File sourceFile = file[i];
                // 目标文件
                File targetFile = new File(new File(targetDir).getAbsolutePath() + File.separator + file[i].getName());
                copyFile(sourceFile, targetFile);
            }
            if (file[i].isDirectory()) {
                // 准备复制的源文件夹
                String dir1 = sourceDir + "/" + file[i].getName();
                // 准备复制的目标文件夹
                String dir2 = targetDir + "/" + file[i].getName();
                copyDirectiory(dir1, dir2);
            }
        }
    }
}

java怎样上传图片(写个例子谢谢);

我有一段上传图片的代码,并且可以根据实际,按月或按天等,生成存放图片的文件夹。 首先在JSP上放一个FILE的标签这些我都不说了,你直接把处理过程改一下就能用。 我把其中存到数据库中的内容删除了,你改一下就能用。

/**
 * 上传图片
 * @param servlet
 * @param request
 * @param response
 * @return
 * @throws Exception
 */
// 这里我是同步上传的,你随意
public synchronized String importPic(HttpServlet servlet, HttpServletRequest request, HttpServletResponse response) throws Exception {
    SimpleDateFormat formatDate = new SimpleDateFormat("yyyyMM");
    Date nowtime = new Date();
    String formatnowtime = formatDate.format(nowtime);
    File root = new File(request.getRealPath("/") + "uploadfile/images/" + formatnowtime + "/"); // 应保证在根目录中有此目录的存在 如果没有,下面则上创建新的文件夹
    if (!root.isDirectory()) {
        System.out.println("创建新文件夹成功" + formatnowtime);
        root.mkdir();
    }
    int returnflag = 0;
    SmartUpload mySmartUpload = new SmartUpload();
    int file_size_max = 1024000;
    String ext = "";
    String url = "uploadfile/images/" + formatnowtime + "/";
    // 只允许上载此类文件
    try {
        // 初始化
        mySmartUpload.initialize(servlet.getServletConfig(), request, response);
        mySmartUpload.setAllowedFilesList("jpg,gif,bmp,jpeg,png,JPG");
        // 上载文件
        mySmartUpload.upload();
    } catch (Exception e) {
        response.sendRedirect(""); // 返回页面
    }
    com.jspsmart.upload.File myFile = mySmartUpload.getFiles().getFile(0);
    if (myFile.isMissing()) { // 没有选择图片做提示!
        returnflag = 3;
    } else {
        String myFileName = myFile.getFileName(); // 取得上载的文件的文件名
        ext = myFile.getFileExt(); // 取得后缀名
        if (ext.equals("jpg") || ext.equals("gif") || ext.equals("bmp") || ext.equals("jpeg") || ext.equals("png") || ext.equals("JPG")) { // jpeg,png不能上传!)
            int file_size = myFile.getSize(); // 取得文件的大小
            String saveurl = "";
            if (file_size < file_size_max) {
                try {
                    // 我上面说到,把操作数据库的代码删除了,这里就应该是判断,你的图片是不是已经存在了,存在要怎么处理,不存在要怎么处理,就是你的事了
                } catch (Exception e) {
                    // 异常处理
                }
                // 更改文件名,取得当前上传时间的毫秒数值
                Calendar calendar = Calendar.getInstance();
                // String filename = String.valueOf(calendar.getTimeInMillis());
                String did = contractBean.getMaxSeq("MULTIMEDIA_SEQ");
                String filename = did;
                String flag = "0";
                String path = request.getRealPath("/") + url;
                String ename = myFile.getFileExt();
                // .toLowerCase()转换大小写
                saveurl = request.getRealPath("/") + url;
                saveurl += filename + "." + ext; // 保存路径
                myFile.saveAs(saveurl, mySmartUpload.SAVE_PHYSICAL);
                // 将图片信息插入到数据库中
                // ------上传完成,开始生成缩略图-----
                java.io.File file = new java.io.File(saveurl); // 读入刚才上传的文件
                String newurl = request.getRealPath("/") + url + filename + "_min." + ext; // 新的缩略图保存地址
                Image src = javax.imageio.ImageIO.read(file); // 构造Image对象
                float tagsize = 200;
                int old_w = src.getWidth(null);
                int old_h = src.getHeight(null);
                int new_w = 0;
                int new_h = 0;
                int tempsize;
                float tempdouble;
                if (old_w > old_h) {
                    tempdouble = old_w / tagsize;
                } else {
                    tempdouble = old_h / tagsize;
                }
                // new_w=Math.round(old_w/tempdouble);
                // new_h=Math.round(old_h/tempdouble);//计算新图长宽
                new_w = 150;
                new_h = 110; // 计算新图长宽
                BufferedImage tag = new BufferedImage(new_w, new_h, BufferedImage.TYPE_INT_RGB);
                tag.getGraphics().drawImage(src, 0, 0, new_w, new_h, null); // 绘制缩小后的图
                FileOutputStream newimage = new FileOutputStream(newurl); // 输出到文件流
                JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(newimage);
                encoder.encode(tag); // 近JPEG编码
                newimage.close();
                returnflag = 1;
            } else {
                returnflag = 0;
                System.out.println("('上传文件大小不能超过" + (file_size_max / 1000) + "K');");
            }
        } else {
            returnflag = 2;
        }
    }
    response.sendRedirect("");
    return "11";
}