代码:
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服务中,服务器可能需要接收客户端上传的图片流,并将其转换为本地图片文件;或者在数据库系统中,图片可能以流的形式存储,当需要展示时,再从流中...
本文将详细介绍如何利用Java中的文件流技术来实现这一功能。具体来说,我们将通过一个具体的示例代码来演示如何将本地图片读取后通过JSP页面展示出来。 #### 二、核心知识点 ##### 2.1 文件流简介 文件流是Java中...
在讨论如何将文件上传、下载并以二进制流的方式保存到数据库中时,首先需要了解几个关键概念:文件上传、...通过以上步骤,就可以实现一个基本的文件上传下载功能,并且通过二进制流的方式将文件内容保存到数据库中。
SmartUpload是一个Java上传组件,它简化了文件上传的处理过程。在JSP页面中,我们可以使用SmartUpload提供的标签库来创建上传界面。在Servlet中,初始化SmartUpload对象,调用其`upload()`方法解析上传请求,然后...
"Post提交,图片以文件流形式上传并保存到数据库"这一技术主题涉及到的是HTTP的POST请求方式、文件流处理以及数据库存储。以下是对这个主题的详细解释: 1. **POST请求**: POST请求是HTTP协议中的一个方法,用于...
本文详细介绍了如何在*** MVC框架中实现图片上传和预览显示的整个过程,这包括前端页面设计、后端控制器和模型的构建、以及与数据库的交互处理。以下是对本文描述的知识点详细说明。 1. 图片上传与存储 *** MVC应用...
在本项目中,我们主要探讨如何使用SpringBoot框架与阿里云OSS(Object Storage Service)服务相结合,通过Easypoi库实现文件的导入、导出功能,以及OSS上的文件上传和下载。Easypoi是一个强大的Java操作Excel的工具...
`jQuery`是一个广泛使用的JavaScript库,它简化了DOM操作、事件处理以及Ajax交互,因此使用`jQuery`实现图片即时上传是一种常见且高效的方法。本文将深入探讨如何利用`jQuery`来创建一个兼容多种浏览器,包括...
在这个场景中,我们讨论的是如何使用Java的Socket来实现文件上传功能,即从客户端将文件发送到服务器,然后保存到服务器的数据库中。这个过程涉及到多个关键知识点,下面我们将详细探讨。 1. **Java Socket基础**:...
JSP 文件上传是指通过 JSP 语言实现文件上传功能的过程。该功能通常应用于 web 应用程序中,例如上传图片、文档等。 在上面的代码中,我们可以看到一个简单的 JSP 文件上传实例。首先,在 index.html 文件中,我们...
- 需要限制文件类型,防止恶意用户上传不安全或大体积的文件,可以通过检查文件扩展名或者MIME类型实现。 - 文件大小限制同样重要,防止服务器被大量大文件拖垮。 - 避免路径遍历攻击,确保文件被安全地保存在...
在Java编程语言中,文件上传是一项常见的功能,无论是图片还是其他类型的文件,都可以通过Java实现。这个场景下,我们主要探讨的是如何使用Java编写代码来完成这个任务。首先,我们需要理解HTTP协议中的POST请求,...
通常,文件上传是通过POST请求实现的,其中包含一个名为"multipart/form-data"的Content-Type,用于分隔不同的数据部分。每个部分都有自己的边界,以便服务器能够正确解析数据。 在C#中,我们可以利用System.Net...
接下来,文件上传至数据库的过程中,通常需要通过前端界面的文件控件来实现上传操作。FineReport作为一款报表工具,提供了丰富的控件来支持这种操作。在模板制作阶段,需要创建一个填报模板,该模板会包含一个文件...
这个过程在很多Web应用中都是常见的需求,例如用户上传头像或者在线文件分享。标题中的"最简单的实现方式"和描述中提到的"代码不超过50行"表明我们将探讨一个简洁高效的解决方案。 首先,我们来看`Program.cs`,这...
Unity3D是一款强大的跨平台游戏开发引擎...综上所述,Unity3D中的图片上传和二进制流解析是一个涉及用户交互、文件操作、图像处理和UI显示的综合过程。在实际开发中,需要根据具体需求和项目架构进行相应的设计和实现。
在“使用layui实现多文件列表上传”这个项目中,主要涉及到了layui的文件上传功能,这在网页应用中是非常常见且实用的功能,尤其对于需要用户提交多份文件的场景。 首先,layui的文件上传组件是基于HTML5的File API...
2. 队列管理:选择的文件会被添加到上传队列中,你可以通过事件监听来展示队列信息,或者实现上传进度条。 3. 分批次上传:为了防止一次性上传大量文件导致服务器压力过大,可以设定每次上传的文件数量,分批次进行...
这可以通过在前端创建一个img元素,其src属性指向一个提供图片流的服务器接口。当用户点击下载按钮时,后端可以通过流方式将图片数据发送到客户端,客户端浏览器会自动开始下载。 标签"上传并显示要下载的文件"表明...