`

文件(图片)流过程实现上传

阅读更多

代码:

package com.siit.utils;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.OutputStream;
import java.text.SimpleDateFormat;
import java.util.Date;

import javax.servlet.http.HttpServletRequest;

/**
 * 图片上传公共类
 *
 * @author
 *
 */
public class ImageLoad {
    // private String uploadPath = "d:\\upload\\"; // 上传文件的目录
    // private String tempPath = "d:\\upload\\tmp\\"; // 临时文件目录
    // private int sizeThreshold = 4096;// 设置缓冲区大小
    private static int sizeMax = 4194304;// 设置图片最大尺寸

    /**
     * 图片上传
     *
     * @param file
     * @param fileName
     *            //新名
     * @param absPath
     *            //文件保存路径
     * @param uploadPath
     *            //文件上传路径
     * @param request
     *
     * @return result //上传结果
     * @throws Exception
     */
    public static String imageUpload(File file, String fileName,String absPath, String uploadPath, HttpServletRequest request) {
        String result = "";
        SimpleDateFormat formatDate = new SimpleDateFormat("yyyyMMdd");
        Date nowtime = new Date();
        String formatnowtime = formatDate.format(nowtime);
        try {
            // 验证图片格式
            boolean flag = readUploadFileType(file);

            if (flag) {
                if (file.length() > 0L && file.length() < sizeMax) {
                    // 上传附件
                    InputStream is = new FileInputStream(file);
                    // 1.文件保存路径(相对路径)
                    // String absPath = "/upload/"+invoiceForm.getInvoiceNumber()+this.getFileFileName().substring(this.getFileFileName().lastIndexOf('.'));
                    if (absPath == null || absPath.equals("")) {
                        absPath = fileName+ file.getName().substring(file.getName().lastIndexOf(".")).toLowerCase();
                    }
                    // 2.构建一个上传文件路径
                    // 应保证在根目录中有此目录的存在 如果没有,下面则上创建新的文件夹
                    // File root = new File(request.getRealPath("/")+ "uploadfile/images/" + formatnowtime +"/");
                    File root = null;
                    if (uploadPath != null && !uploadPath.equals("")) {
                        root = new File(uploadPath);
                    } else {
                        root = new File("d:/uploadfile/images/" + formatnowtime+ "/");
                    }

                    if (!root.isDirectory()) {
                        root.mkdir();
                    }
                    // 3.获得一个远程文件
                    File diskFile = new File(root.getAbsolutePath(), absPath);
                    // 4.构建输出流
                    OutputStream os = new FileOutputStream(diskFile);
                    // 5.能过字节写入输出流
                    byte[] buffer = new byte[8192];
                    int length = 0;
                    while ((length = is.read(buffer)) > 0) {
                        os.write(buffer, 0, length);
                    }
                   
                    is.close();
                    os.close();
                    result = "10";//图片上传成功
                } else {
                    result = "11";// 图片大小不符,禁止上传
                }
            } else {
                result = "12";// 图片类型不符,禁止上传
            }
        } catch (Exception e) {
        }
        return result;
    }

    /**
     * 删除目标图片
     *
     * @param url
     *            目标图片上传路径
     * @param fileName
     *            图片新命名名称
     * @return
     */
    public static boolean delImage(String uploadPath, String fileName) {
        boolean flag = false;
        File file = new File(uploadPath);
        if (file.isDirectory()) {
            File[] files = file.listFiles();
            if (files.length > 0) {
                for (int i = 0; i < files.length; i++) {
                    if (files[i].getName().substring(0,files[i].getName().indexOf(".")).equals(fileName)) {
                        files[i].delete();
                        flag = true;
                    }
                }
            }
        }
        return flag;
    }

    /**
     * 判断上传文件类型
     *
     * @param uploadfile
     * @return
     */
    public static boolean readUploadFileType(File uploadfile) {
        boolean flag = false;
        if (uploadfile != null && !uploadfile.equals("")) {
            String ext = uploadfile.getName().substring(uploadfile.getName().lastIndexOf(".") + 1).toLowerCase();
            //System.out.println(ext);
            String[] suffix = { "jpg", "bmp", "jpeg", "pnd" };
            for (int i = 0; i < suffix.length; i++) {
                if (ext.equals(suffix[i])) {
                    flag = true;
                }
            }
        }
        return flag;
    }

    public static void main(String[] args) throws Exception {
        // File file = new
        // File("C:\\Documents and Settings\\wusongti\\My Documents\\My Pictures\\未命名.jpg");
        String path = "d:/uploadfile/images/20130131/";
        // System.out.println(imageUpload(file, System.currentTimeMillis() +
        // "","", "", null));
        System.out.println(delImage(path, "3"));
        // System.out.println(readUploadFileType(file));
    }
}

分享到:
评论

相关推荐

    图片与流文件互相转换

    在实际应用中,图片与流文件的转换还有许多其他用途,例如在Web服务中,服务器可能需要接收客户端上传的图片流,并将其转换为本地图片文件;或者在数据库系统中,图片可能以流的形式存储,当需要展示时,再从流中...

    通过文件流读取本地图片显示在JSP页面方法

    本文将详细介绍如何利用Java中的文件流技术来实现这一功能。具体来说,我们将通过一个具体的示例代码来演示如何将本地图片读取后通过JSP页面展示出来。 #### 二、核心知识点 ##### 2.1 文件流简介 文件流是Java中...

    将文件上传、下载(以二进制流保存到数据库)实现代码

    在讨论如何将文件上传、下载并以二进制流的方式保存到数据库中时,首先需要了解几个关键概念:文件上传、...通过以上步骤,就可以实现一个基本的文件上传下载功能,并且通过二进制流的方式将文件内容保存到数据库中。

    Java实现文件与图片的上传下载---三种方式

    SmartUpload是一个Java上传组件,它简化了文件上传的处理过程。在JSP页面中,我们可以使用SmartUpload提供的标签库来创建上传界面。在Servlet中,初始化SmartUpload对象,调用其`upload()`方法解析上传请求,然后...

    post提交,图片以文件流形式上传并保存到数据库

    "Post提交,图片以文件流形式上传并保存到数据库"这一技术主题涉及到的是HTTP的POST请求方式、文件流处理以及数据库存储。以下是对这个主题的详细解释: 1. **POST请求**: POST请求是HTTP协议中的一个方法,用于...

    ASP.NET MVC实现图片上传、图片预览显示

    本文详细介绍了如何在*** MVC框架中实现图片上传和预览显示的整个过程,这包括前端页面设计、后端控制器和模型的构建、以及与数据库的交互处理。以下是对本文描述的知识点详细说明。 1. 图片上传与存储 *** MVC应用...

    jquery实现图片即时上传

    `jQuery`是一个广泛使用的JavaScript库,它简化了DOM操作、事件处理以及Ajax交互,因此使用`jQuery`实现图片即时上传是一种常见且高效的方法。本文将深入探讨如何利用`jQuery`来创建一个兼容多种浏览器,包括...

    springboot整合easypoi实现文件导入导出OSS文件上传和下载。OSS图片导出

    在本项目中,我们主要探讨如何使用SpringBoot框架与阿里云OSS(Object Storage Service)服务相结合,通过Easypoi库实现文件的导入、导出功能,以及OSS上的文件上传和下载。Easypoi是一个强大的Java操作Excel的工具...

    JAVA Socket编程实现文件上传

    在这个场景中,我们讨论的是如何使用Java的Socket来实现文件上传功能,即从客户端将文件发送到服务器,然后保存到服务器的数据库中。这个过程涉及到多个关键知识点,下面我们将详细探讨。 1. **Java Socket基础**:...

    jsp 实现文件上传

    JSP 文件上传是指通过 JSP 语言实现文件上传功能的过程。该功能通常应用于 web 应用程序中,例如上传图片、文档等。 在上面的代码中,我们可以看到一个简单的 JSP 文件上传实例。首先,在 index.html 文件中,我们...

    多文件预览上传-多图片预览上传

    - 需要限制文件类型,防止恶意用户上传不安全或大体积的文件,可以通过检查文件扩展名或者MIME类型实现。 - 文件大小限制同样重要,防止服务器被大量大文件拖垮。 - 避免路径遍历攻击,确保文件被安全地保存在...

    C#实现HTTP上传文件的方法

    通常,文件上传是通过POST请求实现的,其中包含一个名为"multipart/form-data"的Content-Type,用于分隔不同的数据部分。每个部分都有自己的边界,以便服务器能够正确解析数据。 在C#中,我们可以利用System.Net...

    上传图片和上传文件的java代码

    在Java编程语言中,文件上传是一项常见的功能,无论是图片还是其他类型的文件,都可以通过Java实现。这个场景下,我们主要探讨的是如何使用Java编写代码来完成这个任务。首先,我们需要理解HTTP协议中的POST请求,...

    ASP.NET(C#) Web Api通过文件流下载文件的实例

    这个实例将详细讲解如何利用文件流来实现文件的下载功能。首先,我们要理解Web API的基本原理,它是一个用于构建RESTful服务的框架,允许通过HTTP协议来传输数据,而文件下载正好可以通过HTTP响应进行。 在本例中,...

    上传文件至数据库并下载

    接下来,文件上传至数据库的过程中,通常需要通过前端界面的文件控件来实现上传操作。FineReport作为一款报表工具,提供了丰富的控件来支持这种操作。在模板制作阶段,需要创建一个填报模板,该模板会包含一个文件...

    C#实现http文件上传图片提交PHP后台.zip

    这个过程在很多Web应用中都是常见的需求,例如用户上传头像或者在线文件分享。标题中的"最简单的实现方式"和描述中提到的"代码不超过50行"表明我们将探讨一个简洁高效的解决方案。 首先,我们来看`Program.cs`,这...

    Unity3D上传图片以及解析二进制流

    Unity3D是一款强大的跨平台游戏开发引擎...综上所述,Unity3D中的图片上传和二进制流解析是一个涉及用户交互、文件操作、图像处理和UI显示的综合过程。在实际开发中,需要根据具体需求和项目架构进行相应的设计和实现。

    swfUpload上传文件图片(多图片)

    2. 队列管理:选择的文件会被添加到上传队列中,你可以通过事件监听来展示队列信息,或者实现上传进度条。 3. 分批次上传:为了防止一次性上传大量文件导致服务器压力过大,可以设定每次上传的文件数量,分批次进行...

    使用layui实现多文件列表上传

    在“使用layui实现多文件列表上传”这个项目中,主要涉及到了layui的文件上传功能,这在网页应用中是非常常见且实用的功能,尤其对于需要用户提交多份文件的场景。 首先,layui的文件上传组件是基于HTML5的File API...

Global site tag (gtag.js) - Google Analytics