Advertisement

上传图片文件,获取图片的实际类型

  •  5星
  •     浏览量: 0
  •     大小:None
  •      文件类型:None


简介:
本工具允许用户上传图片文件,并通过分析返回该图片的真实类型。帮助用户准确识别图片格式和属性。 package com.ylw.p2p.common.utils; import java.awt.image.BufferedImage; import java.io.BufferedInputStream; import java.io.BufferedOutputStream; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.util.HashMap; import java.util.Iterator; import java.util.Map.Entry; import javax.imageio.ImageIO; import javax.imageio.stream.ImageInputStream; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; public class FileUtils { public final static Map IMG_FILE_TYPE_MAP = new HashMap<>(); /** * 图片文件上传 * * @param request 请求对象 * @param response 响应对象 * @param photo 文件对象 * @param strtmp 文件名称,例如:xxx.jpg * @param path 文件路径 * @param num 限制大小(字节) */ public static boolean updatePhoto(HttpServletRequest request, HttpServletResponse response, File photo, String strtmp, String path, long num) { File dir = new File(path); if (!dir.exists()) { dir.mkdirs(); } File newFile = new File(dir, strtmp); if (newFile.exists()) newFile.delete(); BufferedInputStream bis = null; FileInputStream fis = null; try { fis = new FileInputStream(photo); FileOutputStream fos = new FileOutputStream(newFile); BufferedImage src = ImageIO.read(fis); ImageIO.write(src, png, fos); } catch (Exception e) { e.printStackTrace(); } finally { if (null != bis) try { bis.close(); } catch (IOException e) { e.printStackTrace(); } if (null != fis) try { fis.close(); } catch (IOException e1) { e1.printStackTrace(); } } return true; } /** * 普通文件上传 * * @param request 请求对象 * @param response 响应对象 * @param photo 文件对象 * @param strtmp 文件名称,例如:xxx.jpg * @param path 文件路径 */ public static boolean updateFile(HttpServletRequest request, HttpServletResponse response, File photo, String strtmp, String path) { File dir = new File(path); if (!dir.exists()) { dir.mkdirs(); } File newFile = new File(dir, strtmp); if (newFile.exists()) newFile.delete(); BufferedOutputStream bos = null; BufferedInputStream bis = null; FileInputStream fis = null; try { fis = new FileInputStream(photo); long s = fis.available(); if (s > 2097152) { // 文件大小限制为2MB return false; } bis = new BufferedInputStream(fis); FileOutputStream fos = new FileOutputStream(newFile); bos = new BufferedOutputStream(fos); byte[] buf = new byte[4096]; int len; while ((len = bis.read(buf)) != -1) { bos.write(buf, 0, len); } } catch (Exception e) { e.printStackTrace(); } finally { if (null != bos) try { bos.flush(); bos.close(); } catch (IOException e2) { e2.printStackTrace(); } if (null != bis) try { bis.close(); } catch (IOException e3) { e3.printStackTrace(); } if (null != fis) try { fis.close(); } catch (IOException e4) { e4.printStackTrace(); } } return true; } /** * 根据文件内容获取文件类型 * * @param file 文件对象 */ public final static String getFileByFile(File file) { byte[] b = new byte[50]; InputStream is = null; try { is = new FileInputStream(file); is.read(b); return getFileTypeByStream(b); } catch (FileNotFoundException e1) { e1.printStackTrace(); } catch (IOException e2) { e2.printStackTrace(); } finally{ if(is != null) try { is.close(); } catch (IOException e5) { } } return ; } }

全部评论 (0)

还没有任何评论哟~
客服
客服
  • 优质
    本工具允许用户上传图片文件,并通过分析返回该图片的真实类型。帮助用户准确识别图片格式和属性。 package com.ylw.p2p.common.utils; import java.awt.image.BufferedImage; import java.io.BufferedInputStream; import java.io.BufferedOutputStream; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.util.HashMap; import java.util.Iterator; import java.util.Map.Entry; import javax.imageio.ImageIO; import javax.imageio.stream.ImageInputStream; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; public class FileUtils { public final static Map IMG_FILE_TYPE_MAP = new HashMap<>(); /** * 图片文件上传 * * @param request 请求对象 * @param response 响应对象 * @param photo 文件对象 * @param strtmp 文件名称,例如:xxx.jpg * @param path 文件路径 * @param num 限制大小(字节) */ public static boolean updatePhoto(HttpServletRequest request, HttpServletResponse response, File photo, String strtmp, String path, long num) { File dir = new File(path); if (!dir.exists()) { dir.mkdirs(); } File newFile = new File(dir, strtmp); if (newFile.exists()) newFile.delete(); BufferedInputStream bis = null; FileInputStream fis = null; try { fis = new FileInputStream(photo); FileOutputStream fos = new FileOutputStream(newFile); BufferedImage src = ImageIO.read(fis); ImageIO.write(src, png, fos); } catch (Exception e) { e.printStackTrace(); } finally { if (null != bis) try { bis.close(); } catch (IOException e) { e.printStackTrace(); } if (null != fis) try { fis.close(); } catch (IOException e1) { e1.printStackTrace(); } } return true; } /** * 普通文件上传 * * @param request 请求对象 * @param response 响应对象 * @param photo 文件对象 * @param strtmp 文件名称,例如:xxx.jpg * @param path 文件路径 */ public static boolean updateFile(HttpServletRequest request, HttpServletResponse response, File photo, String strtmp, String path) { File dir = new File(path); if (!dir.exists()) { dir.mkdirs(); } File newFile = new File(dir, strtmp); if (newFile.exists()) newFile.delete(); BufferedOutputStream bos = null; BufferedInputStream bis = null; FileInputStream fis = null; try { fis = new FileInputStream(photo); long s = fis.available(); if (s > 2097152) { // 文件大小限制为2MB return false; } bis = new BufferedInputStream(fis); FileOutputStream fos = new FileOutputStream(newFile); bos = new BufferedOutputStream(fos); byte[] buf = new byte[4096]; int len; while ((len = bis.read(buf)) != -1) { bos.write(buf, 0, len); } } catch (Exception e) { e.printStackTrace(); } finally { if (null != bos) try { bos.flush(); bos.close(); } catch (IOException e2) { e2.printStackTrace(); } if (null != bis) try { bis.close(); } catch (IOException e3) { e3.printStackTrace(); } if (null != fis) try { fis.close(); } catch (IOException e4) { e4.printStackTrace(); } } return true; } /** * 根据文件内容获取文件类型 * * @param file 文件对象 */ public final static String getFileByFile(File file) { byte[] b = new byte[50]; InputStream is = null; try { is = new FileInputStream(file); is.read(b); return getFileTypeByStream(b); } catch (FileNotFoundException e1) { e1.printStackTrace(); } catch (IOException e2) { e2.printStackTrace(); } finally{ if(is != null) try { is.close(); } catch (IOException e5) { } } return ; } }
  • 前端JS格式信息
    优质
    本文介绍了如何使用JavaScript在前端环境中获取上传或选择的图像文件的真实格式信息,包括检查文件类型和读取文件元数据的方法。 通过前端JavaScript使用二进制相关API解析图像数据,读取图片文件的真实格式信息。支持jpg、png、webp、gif、ico、bmp、svg和avif等当前主流浏览器都支持的图片格式,能够准确识别这些格式。这样做可以避免因强制修改后缀名伪造图片格式而导致绕过格式限制并产生错误的情况。
  • 使用 layui 地址方法
    优质
    本篇文章详细介绍了如何利用layui框架实现文件上传功能,并提供了获取上传后图片地址的具体方法和示例代码。 今天为大家分享一种使用layui上传图片并返回图片地址的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随文章了解详情吧。
  • 通过getObjectURL路径以现本地预览
    优质
    本教程介绍如何使用getObjectURL方法获取存储在服务器上的图片路径,并实现在本地浏览器中预览上传的图片文件。 使用HTML5的getObjectURL方法获取图片路径以实现本地预览上传图片的功能,类似于点击现有头像上传并更改图片为新头像的过程。
  • 优质
    获取切片类型介绍如何在编程中识别和处理切片数据类型的方法与技巧,帮助开发者更好地利用切片特性优化代码性能。 在视频编码领域,H.264(也称为AVC, Advanced Video Coding)是一种广泛采用的高效压缩标准,它能够提供高质量的视频压缩并减少存储与传输需求。“GetSliceType”可能是一个用于解析H.264码流以确定切片类型的FFmpeg相关函数。通过这种方式可以识别I帧、P帧和B帧。 I帧(Intra Coded Frame)是包含完整图像信息的关键参考帧,没有依赖于其他帧;而P帧(Predicted Frame)则基于前一个I或P帧进行预测编码;B帧(Bidirectional Predicted Frame)同时利用前后两个关键参考点来提高压缩效率。正确处理这些不同类型的视频帧对于高效解码和编码至关重要。 在H.264数据流中,每个切片的头部包含了用于解码的重要信息,包括类型标识符“slice_type”。FFmpeg作为一个开源多媒体工具提供了多种功能以处理H.264码流,其中包括解析“slice_header”中的“slice_type”,进而确定帧类型。因此,“GetSliceType”函数可能从FFmpeg源代码中提取出来用于分析切片类型。 指数哥伦布编码(Exponential-Golomb coding)是一种无符号整数表示方法,在视频压缩标准如H.264中被广泛使用,以高效地表现诸如“slice_type”的熵数据。这种编码方式特别适合于需要处理大范围但实际值分布集中情况的场景。 在实践中,“GetSliceType”函数可能按照以下步骤操作: 1. 解析码流并定位到对应切片头部。 2. 使用指数哥伦布解码方法解析出“slice_type”字段。 3. 根据结果判断切片类型(0表示I帧,1表示P帧,而2-5代表各种B帧)。 4. 依据确定的帧类型执行进一步处理。 这个功能对于视频编辑、转码和流媒体服务等应用场景非常重要。通过识别不同类型的视频帧可以优化解码流程,例如在快进或回放过程中利用I帧的关键参考特性,而在平滑播放时使用P帧与B帧以提高效率。“GetSliceType”函数能够帮助开发者更好地理解H.264编码的细节,并为开发多媒体应用提供必要的工具和库支持。
  • 夹内所有
    优质
    本教程详细介绍了如何编写代码以检索特定文件夹中所有的图像文件。通过简单的步骤和示例,帮助读者轻松掌握这一技能。 返回文件夹中的指定内容,例如所有图片的路径。你还可以运用多线程技术来提高效率。
  • 解读plist
    优质
    本教程详细讲解如何解析iOS项目中的.plist文件,从中提取所需图片资源信息,适合初学者快速掌握相关技巧。 下载并运行python脚本unpack_plist.py,使用plist文件名来获取图片。
  • JavaWeb项目中操作及代码
    优质
    本文章详细介绍了在JavaWeb项目中如何进行文件与图片上传的操作,并提供了具体的代码实现案例。适合初级开发者学习参考。 在JavaWeb开发过程中上传图片或文件的实现通常涉及几个关键步骤:首先需要使用HTML表单设置enctype为multipart/form-data以支持文件上传;接着,在服务器端,可以通过Servlet API中的Part接口来处理接收到的数据,并将文件保存到指定位置。此外,还可以利用第三方库如Apache Commons FileUpload简化这一过程,提高开发效率和代码可读性。
  • 后预览并展示名、大小和
    优质
    本工具允许用户在上传图片后立即预览,并显示文件名、大小及类型等详细信息,便于管理和查看。 点击图片可以实现更换头像的功能,并且可以获得上传图片的文件名、大小和类型。
  • PHPCMSRAR
    优质
    本资源提供PHPCMS内容管理系统专用的图片上传功能增强插件的RAR压缩包下载,解压后按说明文档操作即可快速实现网站图片上传和管理功能优化。 phpcms原系统图片上传插件无法使用,且phpcms的上传按钮不能点击。由于谷歌浏览器不再支持flash上传方式,而phpcms默认采用的就是flash上传,因此我们只能改为H5上传。此版本采用了webuploader.js,感觉这个工具很强大,能够自动识别是否支持h5,并在不支持时自动启用flash上传,兼容低版本的浏览器。改动的文件已经单独拎出来,方便开发者直接替换使用。