选择上传图片后要截取 “C:\Documents and Settings\Administrator\桌面\xxxxx.JPG”  然后根据当前日期年月在项目的image目录下,建立一个年的文件夹和月的文件夹,比如说2009/09/xxxx.jpg,但是图片的名字要重新命名,根据自己的算法,并保存图片,如果目录存在就不新建了,请问怎么写代码?并且存进数据的信息就是“2009/09/修改名字后的片名”,到时候读出来是要连接的,怎么写关键代码?

解决方案 »

  1.   

    这个有什么难的。1:先获得当前的年、月。然后在image目录下创建这两个文件夹。
    2:创建流去读取这个图片到字节数组中,并且根据2009/09/***.jpg这个路径创建流,将流写到这里面。目录存在的判断是File的isDirectory() .楼主字节搞定代码吧,GOOD LUCK!
      

  2.   

    public void uploadFile(String ftpName, InputStream is, String hm, String type) {
    FTPClient ftpClient = null;
    // 得到FTP客户端连接
    try {
    ftpClient = FtpClientManager.getFTPClient();
    // 存放到FTP上面的全路径名
    String ftpFileName = this.getRootPath()+this.createFTPFileName(ftpClient, ftpName)
    + System.getProperty("file.separator")
    + this.createFileName(hm, type);
    //String localFileName = this.createLocalName(upName);
    this.upload(ftpFileName, is, ftpClient);

    } catch (SocketException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    } catch (IOException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    } finally {
    if (ftpClient.isConnected()) {
    try {
    ftpClient.disconnect();
    ftpClient = null;
    } catch (IOException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    }
    }
    }
    }
    private void upload(String serverName,  InputStream is, FTPClient ftpClient) {
    //InputStream is = null;
    try {
    // 创建文件输入流
    // is = new FileInputStream(is);
    // 设置编码格式
    ftpClient.setFileType(FTPClient.BINARY_FILE_TYPE);
    // 解决中文文件名乱码问题
    ftpClient.setControlEncoding("GBK");
    // 保存文件
    ftpClient.storeFile(serverName, is);
    //System.out.println(ftpClient.makeDirectory("ttt"));
    } catch (Exception e) {
    e.printStackTrace();
    } finally {
    if (is != null) {
    try {
    is.close();
    is = null;
    } catch (IOException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    }
    }
    }
    }
    private void upload(String serverName,  InputStream is, FTPClient ftpClient) {
    //InputStream is = null;
    try {
    // 创建文件输入流
    // is = new FileInputStream(is);
    // 设置编码格式
    ftpClient.setFileType(FTPClient.BINARY_FILE_TYPE);
    // 解决中文文件名乱码问题
    ftpClient.setControlEncoding("GBK");
    // 保存文件
    ftpClient.storeFile(serverName, is);
    //System.out.println(ftpClient.makeDirectory("ttt"));
    } catch (Exception e) {
    e.printStackTrace();
    } finally {
    if (is != null) {
    try {
    is.close();
    is = null;
    } catch (IOException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    }
    }
    }
    }
    private void upload(String serverName,  InputStream is, FTPClient ftpClient) {
    //InputStream is = null;
    try {
    // 创建文件输入流
    // is = new FileInputStream(is);
    // 设置编码格式
    ftpClient.setFileType(FTPClient.BINARY_FILE_TYPE);
    // 解决中文文件名乱码问题
    ftpClient.setControlEncoding("GBK");
    // 保存文件
    ftpClient.storeFile(serverName, is);
    //System.out.println(ftpClient.makeDirectory("ttt"));
    } catch (Exception e) {
    e.printStackTrace();
    } finally {
    if (is != null) {
    try {
    is.close();
    is = null;
    } catch (IOException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    }
    }
    }
    }
    [code=Java]private void upload(String serverName,  InputStream is, FTPClient ftpClient) {
    //InputStream is = null;
    try {
    // 创建文件输入流
    // is = new FileInputStream(is);
    // 设置编码格式
    ftpClient.setFileType(FTPClient.BINARY_FILE_TYPE);
    // 解决中文文件名乱码问题
    ftpClient.setControlEncoding("GBK");
    // 保存文件
    ftpClient.storeFile(serverName, is);
    //System.out.println(ftpClient.makeDirectory("ttt"));
    } catch (Exception e) {
    e.printStackTrace();
    } finally {
    if (is != null) {
    try {
    is.close();
    is = null;
    } catch (IOException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    }
    }
    }
    }[/code]
    private String createFTPFileName(FTPClient ftpClient, String serverName)
    throws IOException {
    // 得到FTP服务器根路径并生成存放到FTP的路径
    ftpClient.cwd(getRootPath());
    if (StringUtils.isNotBlank(serverName)) {
    StringBuffer str = new StringBuffer();
    String[] paths = serverName.split("/");
    for (int i = 0; paths != null && i < paths.length; i++) {
    // 构造路径FTP
    str.append(System.getProperty("file.separator")).append(
    paths[i]);
    // 没有指定的路径时创建文件路径
    ftpClient.makeDirectory(paths[i]);
    ftpClient.cwd(paths[i]);
    }
    return str.toString();
    }
    return serverName; }/**
     * 
     * @createTime 11:36:15 AM
     * @param sfzh
     *            身份证号或者体检流水号
     * @param fileType
     *            文件后缀
     * @return 生成的文件名
     * @application
     */
    private String createFileName(String sfzh, String fileType) {
    if (StringUtils.isBlank(sfzh)) {
    return null;
    } else {
    if (StringUtils.isBlank(fileType)) {
    return sfzh + "." + "JPG";
    }
    }
    return sfzh + "." + fileType;
    }自己修改吧上面是FTP上传
    有生成文件名的,有创建文件。文件不存在时创建,存在时直接上传 还有配置上网查一下一大堆
      

  3.   

    到这儿看看,不明白的再问http://blog.csdn.net/fhm727/archive/2009/09/14/4550088.aspx,在线
      

  4.   

    我用的是struts1.2的!!!!!!!!!!!!!!!
      

  5.   

    我的资源里有个 struts1.2 写好的图片上传源代码,包含格式、大小验证,下载后即可使用。楼主去参考下
      

  6.   

    假设图片保存的路径是/images/yyyy/MM/dd/HH/UUID.后缀,文件在struts1中以FormFile保存
    下面是伪代码,没测试:
    FormFile ff = getUploadFile("..");
    SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd/HH");
    String path = "/images/" + sdf.format(new Date());  //格式化当前时间
    //获取path对应服务器端的真实路径
    String realPath = request.getSession().getServletContext().getRealPath(path);
    File file = new File(realPath);
    if(!file.exist()) file.makeDirs();     //路径不存在则创建一个新的String uuid = UUID.randomUUID().toString();         //上传文件在服务器保存的名称(唯一)
    path += "/" + uuid;
    String ext = ..    //通过FormFile获取上传文件的后缀名
    path += ext;