//html 页面如下
<div class="form-group">
<label class="col-sm-2 control-label">上传头像</label>
<div class="col-sm-6">
<input id="appHiddenMain" type="hidden" name="img" value="https://images.gagahi.com/images/default/male.png" />
<input type="file" id="photo" accept="image/*">
<img style="width:160px;" src="https://images.gagahi.com/images/default/male.png" id="imgd1" />
</div>
</div> <script type="text/javascript">
$('#photo').change(function () {
var _this = $(this)[0],
_file = _this.files[0],
fileType = _file.type;
if (/image\/\w+/.test(fileType)) {
//提示
var index = layer.open({
content: '图片上传中...'
, skin: 'msg'
});
var fileReader = new FileReader();
fileReader.readAsDataURL(_file);
fileReader.onload = function (event) {
var result = event.target.result; //返回的dataURL
var image = new Image();
image.src = result;
image.onload = function () { //创建一个image对象,给canvas绘制使用
var cvs = document.createElement('canvas');
var scale = 1;
if (this.width > 1000 || this.height > 1000) { //1000只是示例,可以根据具体的要求去设定
if (this.width > this.height) {
scale = 1000 / this.width;
} else {
scale = 1000 / this.height;
}
}
cvs.width = this.width * scale;
cvs.height = this.height * scale; //计算等比缩小后图片宽高
var ctx = cvs.getContext('2d');
ctx.drawImage(this, 0, 0, cvs.width, cvs.height);
var newImageData = cvs.toDataURL(fileType, 0.8); //重新生成图片,<span style="font-family: Arial, Helvetica, sans-serif;">fileType为用户选择的图片类型</span>
var sendData = newImageData.replace("data:" + fileType + ";base64,", '');
$.post('${base}/file/upload/sendImg.do', {imgCode: sendData}, function (data) {
if (data != '') {
$('.modify_img').attr('src', newImageData);
$("#appHiddenMain").val(data);
$("#imgd1").attr("src",data);
layer.closeAll();
} else {
layer.closeAll();
layer.open({
content: '上传失败'
, skin: 'msg'
});
}
});
} }
} else {
layer.open({
content: '请选择图片格式文件'
, skin: 'msg'
});
}
});
</script>

java代码如下

package com.aaa.qiniu;

import java.io.ByteArrayInputStream;
import java.io.IOException; import com.qiniu.common.QiniuException;
import com.qiniu.common.Zone;
import com.qiniu.http.Response;
import com.qiniu.storage.Configuration;
import com.qiniu.storage.UploadManager;
import com.qiniu.util.Auth;
import com.aaa.utils.UUIDGenerator; import sun.misc.BASE64Decoder; public class CoverUpload {
// 上传到七牛后保存的文件名
//String key = "gagaTest.json";
// 上传文件的路径
//String filePath = "D:\\gagaTest.json"; // 密钥配置
private static Auth auth = Auth.create(QiniuConfig.ACCESS_KEY, QiniuConfig.SECRET_KEY);
// 创建上传对象
private static UploadManager uploadManager = new UploadManager(new Configuration(Zone.zone0())); // 覆盖上传
private static String getUpToken(String key) {
// <bucket>:<key>,表示只允许用户上传指定key的文件。在这种格式下文件默认允许“修改”,已存在同名资源则会被本次覆盖。
// 如果希望只能上传指定key的文件,并且不允许修改,那么可以将下面的 insertOnly 属性值设为 1。
// 第三个参数是token的过期时间
return auth.uploadToken(QiniuConfig.bucketname, key/*, 3600, new StringMap().put("insertOnly", 1)*/);
} public static boolean upload(String filePath, String key) throws IOException {
try {
// 调用put方法上传,这里指定的key和上传策略中的key要一致
Response res = uploadManager.put(filePath, key, getUpToken(key));
// 打印返回的信息
System.out.println(res.bodyString());
} catch (QiniuException e) {
Response r = e.response;
// 请求失败时打印的异常的信息
System.out.println(r.toString());
try {
// 响应的文本信息
System.out.println(r.bodyString());
} catch (QiniuException e1) {
// ignore
}
return false;
}
return true;
} //采用的html5 压缩 传输base64方式
public static boolean uploadHtml5(String imgStr,String key)
{
BASE64Decoder decoder = new BASE64Decoder();
try {
//Base64解码
byte[] b = decoder.decodeBuffer(imgStr);
for (int i = 0; i < b.length; ++i) {
if (b[i] < 0) {//调整异常数据
b[i] += 256;
}
} ByteArrayInputStream byteInputStream = new ByteArrayInputStream(b);
// 调用put方法上传,这里指定的key和上传策略中的key要一致
Response response = uploadManager.put(byteInputStream, key, getUpToken(key), null, null);
// 打印返回的信息
System.out.println(response.bodyString());
} catch (Exception e) {
e.printStackTrace();
// 请求失败时打印的异常的信息
System.out.println(imgStr);
return false;
}
return true;
} // public static void main(String args[]) throws IOException {
// new CoverUpload().upload("C:\\Users\\Administrator\\Desktop\\ip2222222.jpg","tianwenhui111333.jpg");
// }
}

java 七牛上传图片到服务器(采用的html5 压缩 传输base64方式)的更多相关文章

  1. MWEB+七牛 上传图片

    MWEB+七牛 上传图片 博客之前的图片也都用的七牛,但编辑和上传分离还是很麻烦,所以一直很心水meb, 上周mweb降到¥50,感觉短期内应该不会再降了,于是果断入手,今天在和使用图床功能遇到了一些 ...

  2. android上引入七牛 上传图片或者文件 最终整理版本(可用)

    前言: 以下是引入七牛的步骤,以及在七牛中上传文件和获取文件private 私密地址. 生成上传凭证和获取下载凭证 具体如果使用过程有什么疑问可以加QQ(备注:七牛问题). 1:导入相关的包(注意是4 ...

  3. 七牛上传图片视频demo

    /引入Plupload .qiniu.js后 varuploader = Qiniu.uploader({ runtimes:'html5,flash,html4',//上传模式,依次退化 brows ...

  4. koa-ueditor上传图片到七牛

    问题描述:服务器系统架构采用的是koa(并非koa2),客户端富文本编辑器采用的是百度的ueditor控件.现在需要ueditor支持将图片直接上传到七牛云. 前提:百度的ueditor需要在本地配置 ...

  5. flask开发restful api系列(4)--七牛图片服务

    上一章我们讲到如何利用alembic来更新数据库,这章,我们讲如何通过七牛服务来存储图片. 像我们大多数公司一样,公司资金比较少,如果自己开发图片服务器,代价太大:如果我们用自己的网站服务器来保存图片 ...

  6. 百度地图 ijintui以及七牛、百度编辑器、kindeditor

    密码是明文存储的 sig错误是因为params没拼接上md5后的秘钥,测试时候可以在 Api\Controller\CommonController\_initialize 方法里注释掉效验的代码 代 ...

  7. OpenWrite 编辑器如何配置七牛云图床

    感谢用户 mutiantong.cn 的创作分享,原文链接:https://www.jianshu.com/p/29f33ca6e491 1. 配置七牛云 1.1 通过七牛云链接购买七牛云对象存储, ...

  8. JAVA简单上传图片至七牛

    utils package com.example.demo.utils; import com.alibaba.fastjson.JSONObject; import com.qiniu.commo ...

  9. node+express上传图片到七牛

    本人微信公众号:前端修炼之路,欢迎关注 最近做项目的时候有一个上传图片的需求,由于没有后端的配合,所以决定自己来搭个服务器,实现上传图片功能.以后如果需要修改成java或者php为后端,直接使用即可, ...

随机推荐

  1. spring-aop + memcached 的简单实现

    一般情况下,java程序取一条数据是直接从数据库中去取,当数据库达到一定的连接数时,就会处于排队等待状态,某些在一定时间内不会发生变化的数据,完全没必要每次都从数据库中去取,使用spring-aop ...

  2. 【转】 Pro Android学习笔记(八八):了解Handler(2):什么是Handler

    文章转载只能用于非商业性质,且不能带有虚拟货币.积分.注册等附加条件.转载须注明出处:http://blog.csdn.net/flowingflying/ 之前我们有一篇很好的博文<Andro ...

  3. 求小球反弹高度,及落地过程中经过的路程~~~java代码

    总结:这种思想,不是一想就突然出现在脑海里的 package com.c2; //题目:一球从100米高度自由落下,每次落地后反跳回原高度的一半: //再落下,求它在 第10次落地时,共经过多少米?第 ...

  4. java中关于length的真确理解~~~~有补充的请跟帖~~~

    java中的length到底是个什么东西呢?有人说它是一个类,一个方法,如果是方法,它没有括号, 我只知道它可以得出数组的长度,但是今天遇到一段代码,怎么都解释不通,那就是绝对不会把循环的次数与数组的 ...

  5. codeforce 980B - Marlin(构造)

    Marlin time limit per test 1 second memory limit per test 256 megabytes input standard input output ...

  6. AngularJS:template2

    ylbtech-AngularJS: 1.返回顶部 1.   2. 2.返回顶部   3.返回顶部   4.返回顶部   5.返回顶部 1.   2.  6.返回顶部   作者:ylbtech出处:h ...

  7. python开发进程:互斥锁(同步锁)&进程其他属性&进程间通信(queue)&生产者消费者模型

    一,互斥锁,同步锁 进程之间数据不共享,但是共享同一套文件系统,所以访问同一个文件,或同一个打印终端,是没有问题的, 竞争带来的结果就是错乱,如何控制,就是加锁处理 part1:多个进程共享同一打印终 ...

  8. node.js中的buffer.fill

    buffer.fill(value, [offset], [end]) 接收参数: value           将要填充的数据 offet           填充数据的开始位置,不指定默认为 0 ...

  9. ffmpeg-URL(转)

    ffmpeg中为方便对资源进行访问,定义了两个结构体,URLContext中是对具体资源文件进行操作的上下文,URLProtocol则是在将资源进行分类的基础上,对某一类资源操作的函数集,熟悉Linu ...

  10. UIWidget

    [UIWidget] UIWidget在NGUI中的层次如下. 根据上篇所述,UIRect实现实现了Anchor功能.而Widget提供的功能也很简单,如下: 可以看到,widget只提供四个属性,a ...