服务端签名后直传
https://help.aliyun.com/document_detail/31926.html?spm=5176.product31815.6.614.HI0PNh
图片使用
https://help.aliyun.com/document_detail/44688.html?spm=5176.doc44686.6.924.t5CtYr
java后台签名
package wrules; import java.io.IOException; import java.sql.Date; import java.util.LinkedHashMap; import java.util.Map; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.json.JSONObject; import com.aliyun.oss.OSSClient; import com.aliyun.oss.common.utils.BinaryUtil; import com.aliyun.oss.model.MatchMode; import com.aliyun.oss.model.PolicyConditions; @WebServlet(asyncSupported = true) public class PostObjectPolicy extends HttpServlet{ /** * */ private static final long serialVersionUID = 5522372203700422672L; protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String endpoint = "oss-cn-beijing.aliyuncs.com/"; String accessId = "修改"; String accessKey = "修改"; String bucket = "修改"; String dir = "user-dir"; if(null!= request.getParameter("dir")){ dir = request.getParameter("dir"); } String host = "http://" + bucket + "." + endpoint; OSSClient client = new OSSClient(endpoint, accessId, accessKey); try { long expireTime = 30; long expireEndTime = System.currentTimeMillis() + expireTime * 1000; Date expiration = new Date(expireEndTime); PolicyConditions policyConds = new PolicyConditions(); policyConds.addConditionItem(PolicyConditions.COND_CONTENT_LENGTH_RANGE, 0, 1048576000); policyConds.addConditionItem(MatchMode.StartWith, PolicyConditions.COND_KEY, dir); String postPolicy = client.generatePostPolicy(expiration, policyConds); byte[] binaryData = postPolicy.getBytes("utf-8"); String encodedPolicy = BinaryUtil.toBase64String(binaryData); String postSignature = client.calculatePostSignature(postPolicy); Map<String, String> respMap = new LinkedHashMap<String, String>(); respMap.put("accessid", accessId); respMap.put("policy", encodedPolicy); respMap.put("signature", postSignature); //respMap.put("expire", formatISO8601Date(expiration)); respMap.put("dir", dir); respMap.put("host", host); respMap.put("expire", String.valueOf(expireEndTime / 1000)); JSONObject ja1 = new JSONObject(respMap); System.out.println(ja1.toString()); response.setHeader("Access-Control-Allow-Origin", "*"); response.setHeader("Access-Control-Allow-Methods", "GET, POST"); response(request, response, ja1.toString()); } catch (Exception e) { e.printStackTrace(); } } private void response(HttpServletRequest request, HttpServletResponse response, String results) throws IOException { String callbackFunName = request.getParameter("callback"); if (callbackFunName==null || callbackFunName.equalsIgnoreCase("")) response.getWriter().println(results); else response.getWriter().println(callbackFunName + "( "+results+" )"); response.setStatus(HttpServletResponse.SC_OK); response.flushBuffer(); } protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doGet(request, response); } }
javascript全局参数
var objdata = { upfile_endpoint:'http://修改.oss-cn-beijing.aliyuncs.com',//上传地址 upfile_nametype:'random_name',//local_name random_name 上传文件的文件名类型 upfile_defaltdir:'upload/CCCC'//上传路径 多层 格式 upload/floder1/floder2 };
uploader.on('uploadBeforeSend', function (obj, data, headers) { //TODO 如果同一个页面上传多次 需要处理签名逻辑 不用每次都签名 $.ajax({ type : "post", url : "osssignuature", timeout : 10000, data : { "dir" : objdata.upfile_defaltdir }, success : function(str) { if (str) { try { var re = JSON.parse(str); objdata.os ssignature = { 'key' : re.dir, 'policy': re.policy, 'OSSAccessKeyId': re.accessid, 'success_action_status' : '200', //让服务端返回200,不然,默认会返回204 'signature': re.signature }; } catch (e) { alert("系统错误"); } } else { alert("结果为空"); } }, error : function(XMLHttpRequest, textStatus, errorThrown) { alert("ajax error"); }, complete : function(XMLHttpRequest,status){ //请求完成后最终执行参数 if(status == 'timeout'){ alert('请求超时,请稍后再试!'); } }, async : false }); //赋值参数 data = $.extend(data,objdata.osssignature); //设置文件路径 data.key = data.key + "/" + calculate_object_name(data.name,objdata.upfile_nametype); obj.filepath = data.key; file.path = data.key; headers['Access-Control-Allow-Origin'] = "*"; });
上传完效果
源码下载地址
http://download.csdn.net/detail/qinghechaoge/9712694
相关推荐
本文将详细探讨如何使用Java版的百度WebUploader插件将文件上传到阿里云的Object Storage Service(OSS)。首先,我们需要理解WebUploader、Java以及阿里OSS的基本概念。 WebUploader是百度推出的一个强大的前端...
阿里云OSS(Object ...通过使用这个仿百度webuploader插件的阿里云OSS上传控件,开发者可以在其网站或应用中轻松地整合阿里云OSS服务,实现高效、可靠的文件存储和上传功能,同时降低了开发复杂度,提升了用户体验。
delphi xe10.1 开发的图片上传阿里oss动态库 delphi xe10.1 开发的图片上传阿里oss动态库 delphi xe10.1 开发的图片上传阿里oss动态库
Vue 页面使用阿里 OSS 上传功能的实例(一) 本篇文章主要介绍了 Vue 页面使用阿里 OSS 上传功能的实例(一),涵盖...通过本篇文章,读者可以了解到 Vue 页面使用阿里 OSS 上传功能的实现细节,并应用于实际开发中。
本话题聚焦于将帝国CMS与阿里云OSS(Object Storage Service)的深度整合,以及如何实现百度编辑器与阿里云OSS的图片同步,尤其是支持直接粘贴上传图片的功能。 阿里云OSS是一项面向互联网的分布式存储服务,提供大...
总结来说,使用JavaScript和`plupload`实现图片上传到阿里云OSS,涉及到的关键技术包括:前端与后端的交互、`plupload`组件的配置与使用、阿里云OSS SDK的调用以及上传事件的监听与处理。这不仅提升了用户体验,还...
本文将详细讲解如何使用ueditor这款流行的富文本编辑器将图片上传到阿里云对象存储服务(OSS)。 ueditor是一款功能强大的在线富文本编辑器,它支持多种富文本编辑功能,包括图片、视频、表格等多媒体元素的插入。...
本项目“上传文件到阿里云OSS-uniapp.zip”专注于在uni-app平台上实现对阿里云OSS的文件上传功能,特别适合于微信小程序和H5应用。 uni-app是一个多端开发框架,允许开发者编写一次代码,部署到多个平台,包括微信...
Java 实现上传文件到 OSS(阿里云)的功能示例 Java 实现上传文件到 OSS(阿里云)的功能示例是指通过 Java 语言实现将文件上传到阿里云对象存储服务(OSS)的功能。本示例主要介绍了 Java 实现上传文件到 OSS 的...
总的来说,`ossUploader`是一个方便开发者快速集成阿里云OSS上传功能的工具,它简化了文件上传的复杂性,让开发者可以专注于业务逻辑,而不是底层的文件传输细节。通过熟练掌握`ossUploader`的使用,可以提升Web应用...
标题中的“帝国CMS百度编辑器图片附件同步整合阿里云OSS”表明了这个项目是关于将帝国CMS(Empire CMS)系统中使用的百度编辑器(UEditor)与阿里云的对象存储服务(OSS)进行集成,目的是实现图片附件在上传时能够...
单文件上传是指将一个本地文件上传到阿里云OSS的过程。在ASP.NET环境中,这通常涉及到调用阿里云提供的SDK,如`OssClient`类,初始化客户端实例,并使用`UploadObject`方法。你需要指定Bucket名、对象Key(即文件在...
这是封装的oss 上传单独图片
综上所述,这个项目主要涵盖了Android应用集成阿里云OSS SDK的过程,包括依赖引入、初始化、文件上传下载操作以及对官方文档错误的修正。通过理解和实践这些步骤,开发者可以充分利用阿里云OSS服务,为自己的Android...
PHP一键上传图片到阿里云OSS对象存储,自己编写的代码,有一些注释。已在本地测试,运行成功。注意:1.有阿里云的对象存储;2.要获取AccessKey及找准Endpoint,修改代码中相应的部分;3.点击即上传,只支持图片格式...
golang阿里云oss图片上传
通过分析这些代码,我们可以学习到如何使用阿里云OSS Java SDK将本地图片文件上传到云端,并获取上传后的URL以便后续访问。 在实际应用中,使用阿里OSS服务通常涉及以下步骤: 1. **初始化OSSClient**:需要提供...
首先,要实现微信小程序将图片上传至阿里云OSS,你需要进行以下步骤: 1. **注册阿里云账号并创建OSS Bucket**: - 访问阿里云官网,注册一个账号。 - 在阿里云控制台找到OSS服务,创建一个新的Bucket。Bucket是...
1. **签名机制**:阿里云OSS上传文件时,通常需要一个签名(Signature),这是基于Access Key ID和Access Key Secret生成的安全凭证,用于验证请求的合法性。JavaScript端通常通过后端服务获取签名,避免敏感信息...