Js上传图片并生成缩略图
Js上传图片并显示缩略图的流程为
Js选择文件->Jquery上传图片->服务器接收图片流->存储图片->返回结果到Js端->显示缩略图
本文上传图片所用的Js库是ajaxfileupload,下载地址:http://files.cnblogs.com/files/yujie365/ajaxfileupload.js,Html布局采用bootstrap.
后端处理流程使用Java中的Spring框架进行处理
前面页面处理流程
1,Html页面定义File:

2,选择图片并上传:
*绑定fileimage控件的change事件:$("#fileimage").bind("change", uploadFileImage);
*上传图片:
function uploadFileImage() {
var objUrl = getObjectURL(this.files[0]);
// 上传图片
uploadFile("uploadimage/fileimage", "fileimage", function(result) {
});
}
//uploadUrl:服务器用于接收图片的接口
//fileElementID:file控件的id
//callback:图片上传完成后的回调方法。
function uploadFile(uploadUrl, fileElementID, callback) {
$.ajaxFileUpload({
url : uploadUrl,
secureuri : false,
type : 'post',
fileElementId : fileElementID,
dataType : 'JSON',
success : function(data) {
//data:服务器返回的结果
if (data&& callback != null) {
callback(data);
}
},
error : function(data, status, e) {
}
});
}
*显示缩略图:
更新上面uploadFileImage方法为下面代码:
function uploadFileImage() {
var objUrl = getObjectURL(this.files[0]);
// 上传图片
uploadFile("uploadimage/fileimage", "fileimage", function(result) {
// 显示缩略图
console.log("objUrl = " + objUrl);
if (objUrl) {
$("#fileimage_thumbnail").attr("src", objUrl);
}
});
}
后台Java处理流程
1,后台接收图片的方法如下:
@RequestMapping(value = "uploadimage/fileimage")
public void uploadPicture(HttpServletRequest request) {
try {
String filePath = uploadFile(request, pictureUploadService);
if (!Tools.isEmptyString(filePath)) {
setResult(filePath);
logHelper.info("图片上传成功...");
} else {
setResult(
MessageManager.getInstance().getMessage(
"pictureuploadfailed"),
ResultType.Error);
logHelper.info("图片上传失败...");
}
} catch (IllegalStateException e) {
logHelper.warn("图片保存失败:" + e.getMessage());
} catch (IOException e) {
logHelper.warn("图片保存失败:" + e.getMessage());
}
}
2,存储图片处理流程
private String uploadFile(HttpServletRequest request,IUploadFile uploadFile) throws IllegalStateException,
IOException {
String filePath="";
CommonsMultipartResolver multipartResolver = new CommonsMultipartResolver(
request.getSession().getServletContext());
if (multipartResolver.isMultipart(request)) {
MultipartHttpServletRequest multipartHttpServletRequest = (MultipartHttpServletRequest) request;
Iterator<String> fileNames = multipartHttpServletRequest
.getFileNames();
while (fileNames.hasNext()) {
MultipartFile file = multipartHttpServletRequest
.getFile(fileNames.next().toString());
if (file != null) {
filePath = uploadFile.uploadFile(file);
if (!Tools.isEmptyString(filePath)) {
setResult(filePath);
} else {
setResult(
MessageManager.getInstance().getMessage(
"pictureuploadfailed"),
ResultType.Error);
}
}
}
}
return filePath;
}
public interface IUploadFile {
public String uploadFile(IMultipartFile multipartFile) throws IllegalStateException, IOException ;
}
@Service
public class PictureUploadService extends BaseService implements IUploadFile {
/**
* 上传图片
* @param multipartFile
* 用户所上传的图片文件
* @return
* @throws IllegalStateException
* @throws IOException
*/
@Override
public String uploadFile(MultipartFile multipartFile) throws IllegalStateException, IOException {
String relativePath = Helpers.getImageFolderPath();
String imageSavedPath = IOTools.transferFile(multipartFile,
ConfigHelper.IMAGE_SAVED_PATH, relativePath);
logger.info("图片保存路径:" + imageSavedPath);
return imageSavedPath;
}
}
package com.weijiazhe.utils;
import java.io.File;
import java.io.IOException;
import java.util.Dictionary;
import org.springframework.web.multipart.MultipartFile;
import com.weijiazhe.weijiazheutils.ConfigHelper;
public class IOTools {
/**
* 转移文件
*
* @param multipartFile
* @param fileAbsoluteSavedPath
* @param relativePath
* @return
* @throws IllegalStateException
* @throws IOException
*/
public static String transferFile(MultipartFile multipartFile,
String fileAbsoluteSavedPath, String relativePath)
throws IllegalStateException, IOException {
if (!Tools.isEmptyString(relativePath)) {
String fileName = Tools.getGuid();
String prefix = IOTools.getPrefix(multipartFile
.getOriginalFilename());
relativePath += "\\" + fileName + prefix;
String fileSavedPath = fileAbsoluteSavedPath + relativePath;
File file = new File(fileSavedPath);
//文件不存在则创建文件.
if(!file.exists()){
//String dirName=file.getAbsolutePath();
//if(file.isDirectory()){
file.mkdirs();
//}
//fileSavedPath+="\\" + fileName + prefix;
//file=new File(fileAbsoluteSavedPath);
//file.createNewFile();
}
multipartFile.transferTo(file);
}
return relativePath;
}
}
Js上传图片并生成缩略图的更多相关文章
- C#上传图片和生成缩略图以及图片预览
因工作需要,上传图片要增加MIME类型验证和生成较小尺寸的图片用于浏览.根据网上代码加以修改做出如下效果图: 前台代码如下: <html xmlns="http://www.w3.or ...
- PHP.24-TP框架商城应用实例-后台1-添加商品功能、钩子函数、在线编辑器、过滤XSS、上传图片并生成缩略图
添加商品功能 1.创建商品控制器[C] /www.test.com/shop/Admin/Controller/GoodsController.class.php <?php namespace ...
- MVC4 上传图片并生成缩略图
Views @using (Html.BeginForm("Create","img",FormMethod.Post, new { enctype = &qu ...
- C#上传图片同时生成缩略图,控制图片上传大小。
#region 上传图片生成缩略图 /// <summary> /// 上传图片 /// </summary> /// <param name="sender& ...
- thinkphp上传图片,生成缩略图
Image.php <?php /** * 实现图片上传,图片缩小, 增加水印 * 需要定义以下常量 * define('ERR_INVALID_IMAGE', 1); * define('ER ...
- C# webform上传图片并生成缩略图
其实里面写的很乱,包括修改文件名什么的都没有仔细去写,主要是想记录下缩略图生成的几种方式 ,大家明白就好! void UpImgs() { if (FileUpload1.HasFile) { str ...
- MVC3.0 上传图片并生成缩略图
转自:http://mikelai.blog.163.com/blog/static/18411126620118771732675/ Controller: public ActionResult ...
- 一例tornado框架下处理上传图片并生成缩略图的例子
class coachpic(RequestHandler): @gen.coroutine def post(self): picurl = self.request.files[] print(& ...
- Asp.Net 上传图片并生成高清晰缩略图
在asp.net中,上传图片功能或者是常用的,生成缩略图也是常用的.baidu或者google,c#的方法也是很多的,但是一用却发现缩略图不清晰啊,缩略图片太大之类的事情,下面是我在处理图片上的代码, ...
随机推荐
- NetworkManager的坑(如何让network manager不去管理网络端口)
在CentOS上,有时你需要停止并禁用 NetworkManager.但这样做了之后,其实NetworkManager还在影响着你的端口. 比如你有端口配置如下: [root@compute02 ~] ...
- Samba.conf案例 Ubuntu
# Sample configuration file for the Samba suite for Debian GNU/Linux.## This is the main Samba confi ...
- Java设计模式—单例设计模式(Singleton Pattern)全然解析
转载请注明出处:http://blog.csdn.net/dmk877/article/details/50311791 相信大家都知道设计模式,听的最多的也应该是单例设计模式,这种模式也是在开发中用 ...
- 贪吃蛇 c++ ncurses
近期学ncurses.用贪吃蛇训练下 思路:不构造链表.蛇头向前进方向打点,蛇尾逐点消失,形成移动. 须要记录蛇头方向,蛇尾方向.并用list仿造队列,增加拐点信息(空间比链表每一个结点开辟空间节省非 ...
- react jsx 常见问题
问题一: Expected to return a value in arrow function 解决方案: 修改后: // 使用 store return ( <div> <h1 ...
- 蓝桥杯 地宫寻宝 带缓存的DFS
历届试题 地宫取宝 时间限制:1.0s 内存限制:256.0MB 问题描写叙述 X 国王有一个地宫宝库. 是 n x m 个格子的矩阵. 每一个格子放一件宝贝. 每一个宝贝贴着价 ...
- iOS动画案例(1) 仿qq账号信息里的一个动画
受人所托,模仿qq账号信息里的一个动画,感觉挺有意思,也没感觉有多难,就开始做了,结果才发现学的数学知识都还给体育老师了,研究了大半天才做出来. 先看一下动画效果: 用到的知识点: ( ...
- H264 介绍[1]
频编解码技术有两套标准,国际电联(ITU-T)的标准H.261.H.263.H.263+等:还有ISO 的MPEG标准Mpeg1.Mpeg2.Mpeg4等等.H.264/AVC是两大组织集合H.263 ...
- 转 Dos和linux格式转换(转)
错误提示: bad interpreter: No such file or directory: /bin/sh 错误分析: 因为操作系统是windows,在windows下编辑的脚本,所以有可能有 ...
- Java多线程 -- 正确使用Volatile变量
Java 语言中的 volatile 变量可以被看作是一种 “程度较轻的 synchronized”:与 synchronized 块相比,volatile 变量所需的编码较少,并且运行时开销也较少, ...