Java上传图片到服务器
HTML页面的标签
<div id="div_selectpic" align="right" style="width: 300px;font-size: 15px;">
(格式jpg、bmp、png大小100K内)选择图片
<input name="txtfiles" type="text" id="txtfiles" style="display: none">
<input type="file" name="file_pic" id="file_pic" onchange="DynamicPicStr(this,100,'imgid','txtfiles',290,190)" style="width: 70px;" class="easyui-linkbutton">
</div>
<div>
<img id="imgid" alt=""/>
</div>
上传照片的js方法
//新增时图片上传调用,uploadobj:页面传入的文件对象,limitfilessize:限定文件的大小
function DynamicPicStr(uploadobj, limitfilesize, divid, txtid, width, height) {
var files = uploadobj.files[0];
var oFReader = new FileReader();
oFReader.readAsDataURL(files);
var strurl="";//图片物理地址
var txtobj = $("#"+txtid+"");
var objdivimg = $("#"+divid+""); var limitpictype = ["jpg", "bmp", "png"];
try {
//console.info("图片大小:"+files.size);
if (parseInt(files.size / 1024) > limitfilesize) {
alert("图片大小超过规定大小,只能小于" + limitfilesize + "K");
txtobj.value = "";
return false;
}
var filename = files.name;
if (filename != "" && filename != null) {
var searchindex = filename.indexOf(".");
var filetypename = filename.substring(searchindex + 1, filename.length);
var pictypebool = false;
for (var i = 0; i < limitpictype.length; i++) {
if (limitpictype[i].toLowerCase() == filetypename.toLowerCase()) {
pictypebool = true;
break;
}
}
if (!pictypebool) {
alert("图片类型不符合要求,图片类型只能是jpg , bmp , png");
txtobj.value = "";
return false;
}
}
}
catch (e) {
alert(e.name + ": " + e.message + ",判断图片类型、图片大小失败");
} oFReader.onloadend = function(oFRevent) {
strurl = oFRevent.target.result;
objdivimg.attr("src",strurl);
txtobj.val(files);
}
//objdivimg.attr("src",oFReader.result);
txtobj.val(files); console.info("图:"+strurl);
objdivimg.attr("width",width);
objdivimg.attr("height", height);
upload(uploadobj);
}
//文件上传的方法
function upload(file) {
//let img = document.getElementById('img')
let formData = new FormData()
let temp = file.files[0]
var strurl = getContextPathInfo() + "/LowZjblb/upload";
if(temp) {
formData.append('file', temp)
//img.src = window.URL.createObjectURL(temp)
$.ajax({
url: strurl,
type: "POST",
data: formData,
processData: false, // 告诉jQuery不要去处理发送的数据
contentType: false, // 告诉jQuery不要去设置Content-Type请求头
success: function(result) {
$("#newzjzp").val(result.appenddata);//服务器保存的路径
//alert(result);
}
})
}
}
java后端Controller接收的方法
/**
*
* @Title:图片上传返回路径
* @Description
* @param MultipartFile,request
* @return 服务器保存的图片地址url
* @throws
*/
@RequestMapping(value = "/upload", method = RequestMethod.POST)
@ResponseBody
@Log(module = "法证补领管理", operation = "添加")
public OperationResult upload(@RequestParam("file") MultipartFile files,HttpServletRequest request) {
OperationResult result = new OperationResult(OperationResultTypeEnum.ERROR, "增加记录失败");
String dicName="UpFile";//服务器上传文件夹名称
String newFileName=files.getOriginalFilename();
newFileName=newFileName.substring(0,newFileName.lastIndexOf("."));
String picurl = UploadFile.saveFile(files,newFileName,dicName, request);
result.setResulttype(OperationResultTypeEnum.SUCCESS);
result.setMsg("上传成功");
result.setAppenddata(picurl);
return result;
}
java后端负责保存图片的方法如下
public static String saveFile(MultipartFile filedata,String newFileName,String dicName, HttpServletRequest request) {
// TODO Auto-generated method stub
String pathval = request.getSession().getServletContext().getRealPath("/");
// 根据配置文件获取服务器图片存放路径
//String newFileName = String.valueOf(System.currentTimeMillis());
Calendar cale = null;
cale = Calendar.getInstance();
String year = String.valueOf(cale.get(Calendar.YEAR));
String month = String.valueOf(cale.get(Calendar.MONTH) + 1);
String saveFilePath = "UpFile/"+dicName+"/"+year+"/"+month+"/";
/* 构建文件目录 */
File fileDir = new File(pathval + saveFilePath);
if (!fileDir.exists()) {
fileDir.mkdirs();
}
// 上传的文件名
String filename = filedata.getOriginalFilename();
// 文件的扩张名
String extensionName = filename.substring(filename.lastIndexOf(".") + 1);
try {
String imgPath = saveFilePath + newFileName + "." + extensionName;
// System.out.println(pathval + imgPath);打印图片位置
FileOutputStream out = new FileOutputStream(pathval + imgPath);
// 写入文件
out.write(filedata.getBytes());
out.flush();
out.close();
return imgPath;
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
Java上传图片到服务器的更多相关文章
- JSP+java上传图片到服务器,并将地址保存至MYSQL + JSP网页显示服务器的图片
这两天遇到个需求——用户头像修改功能. 查了好多资料,不是代码不全,就是某些高端框架,卡了好久,今已实现,分享给大家,如果有更好的方法,非常感谢可以在下方评论区写出 一.整体项目架构 二.web.xm ...
- java后台中处理图片辅助类汇总(上传图片到服务器,从服务器下载图片保存到本地,缩放图片,copy图片,往图片添加水印图片或者文字,生成二维码,删除图片等)
最近工作中处理小程序宝箱活动,需要java画海报,所以把这块都快百度遍了,记录一下处理的方法,百度博客上面也有不少坑! 获取本地图片路径: String bgPath = Thread.current ...
- React+ajax+java 上传图片并预览
之前有在网上找ajax上传图片的资料,大部分的人写得都是用jQuery,但是在这里用JQuery就大才小用了,所以我就自己写了,先上图. 由上图,首先点击上面的选择文件,在选择图片之后,将会自动上传图 ...
- Android 上传图片到服务器 okhttp一
[目录] (一)上传图片到服务器一 ---------------------------------Android代码 (二)上传图片到服务器二--------------------------- ...
- Java获取Web服务器文件
Java获取Web服务器文件 如果获取的是服务器上某个目录下的有关文件,就相对比较容易,可以设定死绝对目录,但是如果不能设定死绝对目录,也不确定web服务器的安装目录,可以考虑如下两种方式: 方法一: ...
- 一个java页游服务器框架
一.前言 此游戏服务器架构是一个单服的形式,也就是说所有游戏逻辑在一个工程里,没有区分登陆服务器.战斗服务器.世界服务器等.此架构已成功应用在了多款页游服务器 .在此框架中没有实现相关业务逻辑,只有简 ...
- 通过android 客户端上传图片到服务器
昨天,(在我的上一篇博客中)写了通过浏览器上传图片到服务器(php),今天将这个功能付诸实践.(还完善了服务端的代码) 不试不知道,原来通过android 向服务端发送图片还真是挺麻烦的一件事. 上传 ...
- Wcf for wp8 上传图片到服务器,将图片名字插入数据库字段(五)
环境:.NET Framework 3.5 服务: IIS EXpress托管 WCF服务程序 配置:Web.config <!--<connectionStrings> <a ...
- Android中实现java与PHP服务器(基于新浪云免费云平台)http通信详解
Android中实现java与PHP服务器(基于新浪云免费云平台)http通信详解 (本文转自: http://blog.csdn.net/yinhaide/article/details/44756 ...
随机推荐
- 基于grafana+prometheus构建Flink监控
先上一个架构图 Flink App : 通过report 将数据发出去 Pushgateway : Prometheus 生态中一个重要工具 Prometheus : 一套开源的系统监控报警框架 ...
- AI佳作解读系列(五) - 目标检测二十年技术综述
计算机视觉中的目标检测,因其在真实世界的大量应用需求,比如自动驾驶.视频监控.机器人视觉等,而被研究学者广泛关注. 上周四,arXiv新出一篇目标检测文献<Object Detection ...
- Java基础教程:多线程基础(5)——倒计时器(CountDownLatch)
Java基础教程:多线程基础(5)——倒计时器(CountDownLatch) 引入倒计时器 在多线程协作完成业务功能时,有时候需要等待其他多个线程完成任务之后,主线程才能继续往下执行业务功能,在这种 ...
- 2019年Java面试题基础系列228道(4)
1.Java 中能创建 volatile 数组吗? 能,Java 中可以创建 volatile 类型数组,不过只是一个指向数组的引用,而不是整个数组.我的意思是,如果改变引用指向的数组,将会受到 vo ...
- c# 无法加载DLL:找不到指定的模块(异常来自HRESULT:0X8007007E)
c# 无法加载DLL“xxxx”:找不到指定的模块(异常来自HRESULT:0X8007007E)的一个解决方法 以前的一个c#项目,今天运行的时候突然发现调用DLL时出现了下面的错误. 心中很诧异, ...
- LeetCode 414. 第三大的数(Third Maximum Number) 3
414. 第三大的数 414. Third Maximum Number 题目描述 给定一个非空数组,返回此数组中第三大的数.如果不存在,则返回数组中最大的数.要求算法时间复杂度必须是 O(n). 每 ...
- [转帖]HBase详解(很全面)
HBase详解(很全面) very long story 简单看了一遍 很多不明白的地方.. 2018-06-08 16:12:32 卢子墨 阅读数 34857更多 分类专栏: HBase [转自 ...
- maven基础和基本使用
maven介绍 Maven是基于项目对象模型(POM project object model)实现的,可以通过一小段描述信息(配置)来管理项目的构建,报告和文档的软件项目管理工具. 具体作用: 项目 ...
- 长乐培训Day8
T1 远征 题目 [题目描述] 寒枫将军将要带领他的部队去圣雪山消灭那里的冰龙.部队分成了若干个小队,属于同一个小队的人兵种相同. 寒枫将军有着杰出的指挥能力,在战斗的时候,寒枫将军能够让所有相同兵种 ...
- 在做爬虫或者自动化测试时新打开一个新标签页,必须使用windows切换
在做爬虫或者自动化测试时,有时会打开一个新的标签页或者新的窗口,直接使用xpath定位元素会发现找不到元素,在firefox中定位了元素还是找不到, 经过多次发现,在眼睛视野内看到这个窗口是在最前面, ...