Ajax实现异步上传图片

目标:Ajax实现异步上传图片

要求:点击页面浏览按钮后,选择需要上传的图片,页面无刷新,将上传的图片展示出来

开发流程

一:在页面编写表单代码和js代码

 

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Ajax异步上传图片</title>
<-- 引入jQuery异步上传js文件 -->
<script src="/resource/jquery.form.js" type="text/javascript"></script>

<!-- Ajax异步上传图片 -->
<script type="text/javascript">
	function uploadPic() {
		// 上传设置
		var options = {
				// 规定把请求发送到那个URL
				url: "/upload/uploadPic.do",
				// 请求方式
				type: "post",
				// 服务器响应的数据类型
				dataType: "json",
				// 请求成功时执行的回调函数
				success: function(data, status, xhr) {
					// 图片显示地址
					$("#allUrl").attr("src", data.path);
				}
		};
		
		$("#jvForm").ajaxSubmit(options);
	}
</script>
</head>
<body>
	<form id="jvForm" action="o_save.shtml" method="post" enctype="multipart/form-data">
		<table>
			<tbody>
				<tr>
					<td width="20%">
						<span>*</span>
						上传图片(90x150尺寸):</td>
						<td width="80%">
						注:该尺寸图片必须为90x150。
					</td>
				</tr>
				<tr>
					<td width="20%"></td>
						<td width="80%">
						<img width="100" height="100" id="allUrl"/>
						<!-- 在选择图片的时候添加事件,触发Ajax异步上传 -->
						<input name="pic" type="file" onchange="uploadPic()"/>
					</td>
				</tr>
			</tbody>
		</table>
	</form>
</body>
</html>

 

实现步骤:

1.编写form表单input类型为file

2.为页面保存按钮添加onchange事件

3.编写js代码,使用jQuery提交form表单(jQuery.form.js文件,可以自动模拟出一个form表单),请求路径

4.页面编写暂时到这里

二:在后台实现图片的上传

这里使用的是springmvc(注解开发)图片上传

package com.wanghang.upload;

import java.io.IOException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.json.JSONObject;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.multipart.MultipartFile;

/**
 * Ajax异步上传图片
 *
 * @author Hang.W
 * @version 1.0, 2017-02-14 00:51:39
 */
@Controller
public class UploadController {

	/**
	 * 使用Ajax异步上传图片
	 * 
	 * @param pic 封装图片对象
	 * @param request
	 * @param response
	 * @throws IOException 
	 * @throws IllegalStateException 
	 */
	@RequestMapping("/upload/uploadPic.do")
	public void uploadPic(MultipartFile pic, HttpServletRequest request, HttpServletResponse response) throws IllegalStateException, IOException {

		try {
			// 获取图片原始文件名
			String originalFilename = pic.getOriginalFilename();
			System.out.println(originalFilename);
		
			// 文件名使用当前时间
			String name = new SimpleDateFormat("yyyyMMddHHmmssSSS").format(new Date());
		
			// 获取上传图片的扩展名(jpg/png/...)
			String extension = FilenameUtils.getExtension(originalFilename);
			
			// 图片上传的相对路径(因为相对路径放到页面上就可以显示图片)
			String path = "/upload/" + name + "." + extension;

			// 图片上传的绝对路径
			String url = request.getSession().getServletContext().getRealPath("") + path;
		
        		File dir = new File(url);
			if(!dir.exists()) {
			dir.mkdirs();
			}
			
			// 上传图片
			pic.transferTo(new File(url));
		
			// 将相对路径写回(json格式)
			JSONObject jsonObject = new JSONObject();
			// 将图片上传到本地
			jsonObject.put("path", path);
		
			// 设置响应数据的类型json
			response.setContentType("application/json; charset=utf-8");
			// 写回
			response.getWriter().write(jsonObject.toString());

		} catch (Exception e) {
			throw new RuntimeException("服务器繁忙,上传图片失败");
		}
	}
	
}

 

图片上传

 

1.springmvc进行参数绑定,但默认是不支持图片上传的,可以在springmvc的配置文件中进行文件上传的配置

2.设置pic形参,接收页面传递的参数

3.普通文件上传代码

4.将图片以json格式写回页面

5.图片上传部分完成

页面图片展示

1.使用jQuery动态获取到<img>标签的id

2.将获取到的json数据赋值到<img>标签的src属性

3.赋值完后,就完成了图片页面无刷新显示

 

 

 

 

 

 

 

  • 17
    点赞
  • 43
    收藏
    觉得还不错? 一键收藏
  • 9
    评论
TinyMCE是一个功能强大的富文本编辑器,它能够轻松实现图片的异步上。要实现这个功能,你可以按照以下步骤进行: 1. 首先,确保你已经在网页中引入了TinyMCE编辑器的库文件。 2. 在页面中创建一个HTML的textarea元素,并将其id设置为"myTextarea"(也可以自定义其他id)。 3. 使用JavaScript代码初始化TinyMCE编辑器,同时配置相应的设置和选项。其中,你需要在设置中添加一个自定义的图片回调函数。例如: ```javascript tinymce.init({ selector: '#myTextarea', plugins: 'image', toolbar: 'image', file_picker_callback: function(callback, value, meta) { // 在这里编写图片的异步处理逻辑 } }); ``` 4. 在图片回调函数中,你可以使用AJAX或其他HTTP请求方法将图片异步上至服务器。这需要你根据具体的后端语言来处理上请求并将图片保存到服务器上的指定位置。上成功后,你需要将图片的URL回给TinyMCE编辑器,以供其插入到编辑器中。 以下是一个示例的上回调函数,假设你使用了jQuery库来简化AJAX请求的操作: ```javascript file_picker_callback: function(callback, value, meta) { // 打开一个自定义的图片选择框 // ... // 当用户选择图片后,调用以下回调函数 var fileInput = document.getElementById('fileInput'); // 假设你的图片选择框的id是"fileInput" var file = fileInput.files[0]; // 获取用户选择的图片文件 // 使用AJAX图片至服务器 var formData = new FormData(); formData.append('image', file); $.ajax({ url: 'upload.php', // 上图片的后端处理脚本 type: 'POST', data: formData, processData: false, contentType: false, success: function(data) { // 上成功后 var imageUrl = data.imageUrl; // 假设服务器返回的上成功后的图片URL存在data.imageUrl中 // 将图片URL递给回调函数,以便TinyMCE插入图片 callback(imageUrl, { alt: '' }); } }); } ``` 使用以上步骤,你就可以在TinyMCE编辑器中实现图片的异步上。当用户选择图片并上成功后,图片将被插入到编辑器的当前光标位置。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值