`
alisdame
  • 浏览: 7519 次
  • 来自: 上海
文章分类
社区版块
存档分类
最新评论

js读取本地图片进行预览,上传服务器

阅读更多
1.js进行图片预览
使用input标签来选择图片,使用FileReader读取图片并转成base64编码,然后发送给服务器。
<html>
  <body>
    <img id="image" src="" />
    <br/>
    <input type="file" onchange="selectImage(this);"/>
    <br/>
    <input type="button" onclick="uploadImage();" value="提交"/>
    <script>
      var image = '';
      function selectImage(file){
        if(!file.files || !file.files[0]){
          return;
        }
        var reader = new FileReader();
        reader.onload = function(evt){
          document.getElementById('image').src = evt.target.result;
          image = evt.target.result;
        }
        reader.readAsDataURL(file.files[0]);
      }
      function uploadImage(){
    	  $.ajax({
    	    type:'POST',
    	    url: 'ajax/uploadimage', 
    	    data: {image: image},
    	    async: false,
    	    dataType: 'json',
    	    success: function(data){
    	      if(data.success){
    	        alert('上传成功');
    	      }else{
    	        alert('上传失败');
    	      }
    	    },
    	    error: function(err){
    	      alert('网络故障');
    	    }
    	  });
    	}
    </script>
    <script src="jquery-1.11.1.min.js"></script>
  </body>
</html>


2.服务器接收数据,然后写到磁盘
import java.io.FileOutputStream;
import java.io.IOException;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import sun.misc.BASE64Decoder;  

/**
 * 上传图片。
 */
public class UploadImageAjax extends HttpServlet {

	private static final long serialVersionUID = 1L;

	@Override
	protected void doPost(HttpServletRequest req, HttpServletResponse resp)
	        throws ServletException, IOException{
		
		String image = req.getParameter("image");
		
		// 只允许jpg
		String header = "data:image/jpeg;base64,";
		if(image.indexOf(header) != 0){
			resp.getWriter().print(wrapJSON(false));
			return;
		}
		
		// 去掉头部
		image = image.substring(header.length());
		
		// 写入磁盘
		boolean success = false;
		BASE64Decoder decoder = new BASE64Decoder();
		try{
			byte[] decodedBytes = decoder.decodeBuffer(image);
			String imgFilePath = "D://uploadimage.jpg";
			FileOutputStream out = new FileOutputStream(imgFilePath);
			out.write(decodedBytes);
			out.close();
			success = true;
		}catch(Exception e){
			success = false;
			e.printStackTrace();
		}
		
		resp.getWriter().print(wrapJSON(success));
	}
	
	private String wrapJSON(boolean success){
		return "{\"success\":" + success + "}";
	}
}


3.配置文件web.xml
<web-app>
  <servlet>
    <servlet-name>UploadImage</servlet-name>
    <servlet-class>UploadImageAjax</servlet-class>
  </servlet>
  <servlet-mapping>
    <servlet-name>UploadImage</servlet-name>
    <url-pattern>/ajax/uploadimage</url-pattern>
  </servlet-mapping>
</web-app>


4.需要注意的地方
需要jquery的支持:jquery-1.11.1.min.js
需要servlet的支持:servlet-api.jar
需要Base64解码支持:sun.misc.BASE64Decoder。引入这个包eclipse可能会报错,请按照http://blog.csdn.net/hurryjiang/article/details/6958146进行处理。
  • UploadImage.rar (218.5 KB)
  • 描述: 上传图片的project
  • 下载次数: 234
分享到:
评论

相关推荐

    javascript 读取本地文件

    在探讨“JavaScript读取本地文件”的主题时,我们主要聚焦于如何利用JavaScript在浏览器环境中读取用户计算机上的本地文件。这种功能在很多场景下都极为有用,比如在上传文件前预览其内容、数据导入导出操作等。下面...

    图片上传本地预览插件

    在IT领域,图片上传本地预览插件是一个常见的功能组件,尤其在网页应用和桌面软件中,它极大地提升了用户体验。这个插件的核心作用是让用户在实际上传图片到服务器之前,能够在本地环境中预览图片效果,确保图片的...

    jquery图片上传前预览 无需上传至服务器

    在这个场景中,jQuery被用来处理用户选择的图片文件,通过JavaScript读取文件内容并显示为预览图像。这通常涉及到HTML5的File API,该API允许在浏览器中访问和操作本地文件,而不依赖服务器。 要实现图片预览,...

    jsp 本地图片上传前的预览

    整个工程"test.jsp"的实现将这些部分结合在一起,为用户提供了一个友好的本地图片上传预览功能。在这个过程中,我们利用了HTML5的特性,如文件API和data URL,以及jQuery的便利性,实现了前后端的协同工作。这个项目...

    jquery 本地上传图片预览Demo

    在本文中,我们将深入探讨如何使用jQuery实现本地图片上传预览功能,这是一项常见的Web开发需求,尤其是在构建交互式用户界面时。jQuery是一款强大的JavaScript库,它简化了DOM操作、事件处理、动画制作以及Ajax交互...

    JS+asp.net+图片上传+预览+支持多上传+上传前预览

    在本文中,我们将深入探讨如何使用JavaScript(JS)与ASP.NET技术实现图片上传、预览以及支持多文件上传和上传前预览的功能。这个技术组合是现代Web应用中常见的需求,尤其是在用户交互丰富的网站和应用中。 首先,...

    js图片上传预览效果

    在JavaScript开发中,图片上传预览效果是一种常见的需求,它允许用户在正式上传图片之前查看其效果,确保图片质量和方向正确。本知识点将围绕“js图片上传预览效果”这一主题,结合提供的文件名列表,深入讲解实现这...

    js图片上传并预览图片

    在JavaScript中实现图片上传并预览功能是一项常见的前端任务,主要涉及到HTML5的...以上是实现“js图片上传并预览图片”的主要技术点和步骤,理解并掌握这些知识点,可以构建出稳定且用户体验良好的图片上传预览功能。

    js读取csv文件并使用json显示出来

    在介绍如何使用JavaScript(简称JS)读取CSV文件并使用JSON格式进行展示之前,我们先来了解几个基础概念。 CSV文件是逗号分隔值(Comma-Separated Values)文件的简称,是一种简单的文件格式,用于存储表格数据,...

    图片裁剪预览上传至服务器,并支持二次裁剪预览上传。

    本项目涉及的主要知识点是图片裁剪、预览以及上传至服务器,并且支持二次裁剪预览上传。这一过程通常涵盖前端和后端两个主要部分,分别由JavaScript和Java语言来实现。以下是关于这个主题的详细解释。 一、图片裁剪...

    本地图片上传即时预览

    这个功能允许用户在选择本地图片后立即在页面上看到预览效果,无需等待图片实际上传到服务器。实现这个功能涉及到几个关键的技术点: 1. **HTML5 File API**:现代浏览器提供了File API,使得我们可以在JavaScript...

    H5实现读取图片裁剪及上传功能

    借助File API,我们可以让用户选择本地图片,并在不离开浏览器的情况下进行处理。`&lt;input type="file"&gt;`元素是实现这一功能的基础,它允许用户选择本地文件。例如: ```html *" id="imageSelector"&gt; ``` 当用户...

    图片上传及预览+时间水印

    同时,使用JavaScript或者框架如jQuery、Vue.js等进行事件监听和文件预览,可以通过FileReader API读取文件内容并显示为预览图。为了限制图片的像素、大小和张数,可以在选择文件后立即进行检查,如果不符合设定的...

    Jquery 表单验证+本地图片上传-切割-预览

    在本项目中,"Jquery 表单验证+本地图片上传-切割-预览"是一个综合性的前端开发实例,它涵盖了几个重要的JavaScript库和技术,包括jQuery、表单验证、图片上传、图片切割以及预览功能。以下是这些知识点的详细解释:...

    .Net图片上传预览

    在.NET开发环境中,图片上传预览功能是常见的需求,它允许用户在上传图片到服务器之前进行查看和确认,提升用户体验。下面将详细讲解如何实现这一功能。 首先,我们需要理解图片预览的基本原理。图片预览通常涉及到...

    AJAX实现读取本地文本文档内容并展示在网页上

    2. 在app.js中,编写JavaScript代码来处理文件选择和读取: ```javascript document.getElementById('fileInput').addEventListener('change', function(e) { var file = e.target.files[0]; if (file.type.match...

    Java web使用pdf.js在线预览远程服务器上的pdf文件

    "Java Web使用pdf.js在线预览远程服务器上的pdf文件"这个主题涵盖了如何利用pdf.js库实现在Web环境中流畅、安全地预览PDF文档。pdf.js是Mozilla开发的一个开源项目,它允许开发者在浏览器端直接渲染PDF内容,无需...

    支持批量上传、JS图片预览的前端上传组件

    【标题】"支持批量上传、JS图片预览的前端上传组件"所涉及的知识点主要集中在前端开发领域,尤其是文件上传和用户体验优化上。这个组件设计用于处理用户在Web应用中上传多个文件的需求,同时提供了图片预览功能,...

    上传图片本地预览效果

    在现代Web应用中,"上传图片本地预览效果"是一个常见的功能,特别是在社交媒体、电子商务、图像编辑等场景中。这个功能允许用户在选择图片后,无需等待上传完成就能在页面上即时预览所选的图片,提升了用户体验。...

Global site tag (gtag.js) - Google Analytics