当前位置: 首页 > news >正文

net快速建站音乐网站如何建立

net快速建站,音乐网站如何建立,店铺推广引流,网站建设怎么做网站flutter直接上传文件到阿里云需要获取凭证#xff0c;通过调用阿里云获取凭证的接口能拿到下面这些参数 {StatusCode: 200,AccessKeyId: STS.NSsrKZes4cqm.....,AccessKeySecret: 7eGnLZaEFsRCGYJAnrtdE9n.....…flutter直接上传文件到阿里云需要获取凭证通过调用阿里云获取凭证的接口能拿到下面这些参数 {StatusCode: 200,AccessKeyId: STS.NSsrKZes4cqm.....,AccessKeySecret: 7eGnLZaEFsRCGYJAnrtdE9n.....,Expiration: 2020-04-08T03:44:21Z,SecurityToken: CAISlQJ1q6Ft5B2y.....}获取凭证的接口一般是后台去对接阿里云前端调后台接口即可。STS.的这种AccessKeyId安全性高一些 1.获取OSSToken信息 import dart:math; import package:jade/https/HttpApplication.dart; import package:jade/utils/alioss/AliOSSAccessTokenInfoBean.dart; import package:intl/intl.dart; import dart:typed_data; import dart:convert; import package:crypto/crypto.dart; import package:uuid/uuid.dart;class OSSHelper{//从给定的字母中生成随机字符串String getRandom(int num) {String alphabet qwertyuiopasdfghjklzxcvbnmQWERTYUIOPASDFGHJKLZXCVBNM;String left ;for (var i 0; i num; i) {left left alphabet[Random().nextInt(alphabet.length)];}return left;}//这个时间要注意String getGMTDateString() {var date DateTime.now();date date.subtract(const Duration(hours: 8));return DateFormat(EEE, dd MMM yyyy HH:mm:ss GMT, en).format(date);}///使用md5加密String generateMD5(String data) {Uint8List content new Utf8Encoder().convert(data);Digest digest md5.convert(content);return digest.toString();}httpGetStsInfo({Function callback}){//根据后台给定的规则配置uuidvar uuid Uuid();String uuidStr uuid.v4().replaceAll(-, ); //去掉uuid中的‘-’获取到32位String nowDate DateTime.now().toString().substring(0,19);//当前时间拼接uuid并加盐后面这串盐由后台给定String md5Str nowDate uuidStr ikloniyq8923yvakn67q4in; //调用获取OSSToken信息的接口HttpApplication.getInstance().alOSSStsInfo(uuidStr, nowDate, generateMD5(md5Str),callBack: (result){if(result ! null){AliOssAccessTokenInfoBean _aliOSSAccessTokenInfoBean AliOssAccessTokenInfoBean.fromJson(result);if(_aliOSSAccessTokenInfoBean ! null){callback(_aliOSSAccessTokenInfoBean);}}},errorCallBack: (error){});} }token信息实体类 class AliOssAccessTokenInfoBean {AliOssAccessTokenInfoBean({this.securityToken, this.accessKeySecret, this.accessKeyId, this.expiration, this.statusCode,});AliOssAccessTokenInfoBean.fromJson(dynamic json) {securityToken json[SecurityToken];accessKeySecret json[AccessKeySecret];accessKeyId json[AccessKeyId];expiration json[Expiration];statusCode json[StatusCode];}String securityToken;String accessKeySecret;String accessKeyId;String expiration;int statusCode;MapString, dynamic toJson() {final map String, dynamic{};map[SecurityToken] securityToken;map[AccessKeySecret] accessKeySecret;map[AccessKeyId] accessKeyId;map[Expiration] expiration;map[StatusCode] statusCode;return map;}}上传方法 import dart:convert; import dart:io; import dart:math; import dart:typed_data; import package:crypto/crypto.dart; import package:dio/dio.dart;class UploadOss {//请求下来的AccessKeyIdstatic String ossAccessKeyId;//请求下来的AccessKeySecretstatic String ossAccessKeySecret;// oss设置的bucket列表中用来存放图片视频的文件夹的名字static String bucket zmkx;// 发送请求用的url,根据你自己设置的是哪个城市的static String url https://$bucket.oss-cn-hangzhou.aliyuncs.com;static String host $bucket.oss-cn-hangzhou.aliyuncs.com; //写入你对应的地址//请求下来的AccessKeySecretstatic String ossSecurityToken;// 过期时间 请求下来的expiration static String expiration;/** params file 要上传的文件对象* params rootDir 阿里云oss设置的根目录文件夹名字* param fileType 文件类型例如jpg,mp4等* param callback 回调函数我这里用于传cancelToken方便后期关闭请求* param onSendProgress 上传的进度事件* */static FutureString upload({ Uint8List file , String rootDir oss/folder, String fileName,Function callback, Function onSendProgress}) async {String policyText {expiration: $expiration,conditions: [{bucket: $bucket },[content-length-range, 0, 1048576000]]};// 获取签名String signature getSignature(policyText);BaseOptions options new BaseOptions();options.responseType ResponseType.plain;//创建dio对象Dio dio new Dio(options);/*dio.options.responseType ResponseType.plain;dio.interceptors.add(InterceptorsWrapper(onRequest: (options, handler) {options.headers[Authorization] OSS ossAccessKeyId : signature;options.headers[Host] host;options.headers[x-oss-security-token] ossSecurityToken;options.contentType multipart/form-data;//options.headers[date] date;handler.next(options);}));*/// 生成oss的路径和文件名String pathName $rootDir/test_hyf.$fileName;// 请求参数的form对象FormData data new FormData.fromMap({// Filename: fileName,key: pathName,policy: getSplicyBase64(policyText),OSSAccessKeyId: ossAccessKeyId,success_action_status: 200, //OSSToken信息里的StatusCode是200我设置成200阿里云默认返回204signature: signature,x-oss-security-token: ossSecurityToken,contentType: multipart/form-data,file: MultipartFile.fromBytes(file),});Response response;print(url $url);try {// 发送请求response await dio.post(url, data: data);// 成功后返回文件访问路径if(response.statusCode 200){ //获取OSSToken信息接口的StatusCode返多少就判断等于多少return $url/$pathName;}} catch(e) {throw(e.message);}}/** 生成固定长度的随机字符串* */static String getRandom(int num) {String alphabet qwertyuiopasdfghjklzxcvbnmQWERTYUIOPASDFGHJKLZXCVBNM;String left ;for (var i 0; i num; i) { // right right (min (Random().nextInt(max - min))).toString();left left alphabet[Random().nextInt(alphabet.length)];}return left;}/** 根据图片本地路径获取图片名称* */static String getImageNameByPath(String filePath) {// ignore: null_aware_before_operatorreturn filePath?.substring(filePath?.lastIndexOf(/)1,filePath?.length);}/*获取文件类型* */static String getFileType(String path) {print(path);ListString array path.split(.);return array[array.length -1];}/// 获取日期static String getDate() {DateTime now DateTime.now();return ${now.year}${now.month}${now.day};}// 获取plice的base64static getSplicyBase64(String policyText) {//进行utf8编码Listint policyText_utf8 utf8.encode(policyText);//进行base64编码String policy_base64 base64.encode(policyText_utf8);return policy_base64;}/// 获取签名static String getSignature(String policyText) {//进行utf8编码Listint policyText_utf8 utf8.encode(policyText);//进行base64编码String policy_base64 base64.encode(policyText_utf8);//再次进行utf8编码Listint policy utf8.encode(policy_base64);//进行utf8 编码Listint key utf8.encode(ossAccessKeySecret);//通过hmac,使用sha1进行加密Listint signature_pre Hmac(sha1, key).convert(policy).bytes;//最后一步将上述所得进行base64 编码String signature base64.encode(signature_pre);return signature;} }调用方式 import dart:typed_data; import package:jade/utils/alioss/AliOSSAccessTokenInfoBean.dart; import package:jade/utils/alioss/OSSHelper.dart; import package:jade/utils/alioss/UploadOss.dart; import package:flutter/material.dart; import package:multi_image_picker/multi_image_picker.dart;class AliUpLoadTest extends StatefulWidget{overrideStateStatefulWidget createState() {// TODO: implement createStatereturn _AliUpLoadTest();} }class _AliUpLoadTest extends StateAliUpLoadTest{overrideWidget build(BuildContext context) {// TODO: implement buildreturn GestureDetector(child: Column(mainAxisAlignment: MainAxisAlignment.center,children: [Container(width: 100,height: 60,color: Colors.red,)],),onTap: (){//最好是在调完接口后对对应参数进行赋值接着使用上传方法本人写死请求下来的token信息进行测试一直报403应该是token信息的持有时间很短OSSHelper().httpGetStsInfo(callback: (aliOSSAccessTokenInfoBean){AliOssAccessTokenInfoBean _aliOSSAccessTokenInfoBean aliOSSAccessTokenInfoBean;setState(() {UploadOss.ossAccessKeyId _aliOSSAccessTokenInfoBean.accessKeyId;UploadOss.ossAccessKeySecret _aliOSSAccessTokenInfoBean.accessKeySecret;UploadOss.expiration _aliOSSAccessTokenInfoBean.expiration;UploadOss.ossSecurityToken _aliOSSAccessTokenInfoBean.securityToken;});openPhotoSelect(1);});},);}openPhotoSelect(int maxImages) async {try {ListAsset images await MultiImagePicker.pickImages(maxImages: 1,enableCamera: true,cupertinoOptions: CupertinoOptions(takePhotoIcon: chat),materialOptions: MaterialOptions(actionBarTitle: 图片选择,allViewTitle: 所有图片,useDetailsView: true,selectCircleStrokeColor: #4dc8b6,selectionLimitReachedText: 最多选择$maxImages张图片,),);Asset asset images[0];uploadFile(asset);} on Exception catch (e) {print(e);}}FutureString uploadFile(Asset asset ) async {ByteData byteData await asset.getByteData();Listint imageData byteData.buffer.asUint8List();final String url await UploadOss.upload(file: imageData,fileName:asset.name);print(OSS返回的文件地址 $url);return url;} }以上直接是上传图片到阿里云成功调通了的demo,并没由做多图的封装。UploadOss是在网上找的工具类百分之九十九搜出来都是这个。 还有找到另外一个工具类不过并没有用测试过代码 import dart:collection; import dart:convert; import dart:math; import dart:typed_data;import package:crypto/crypto.dart; import package:dio/dio.dart; import package:intl/intl.dart;class UploadUtil {String host $bucket.oss-cn-hangzhou.aliyuncs.com; //写入你对应的地址// 发送请求的url,根据你自己设置的是哪个城市的static String url https://$bucket.oss-cn-hangzhou.aliyuncs.com;static String ossAccessKeyId STS.NV864oDQJQELywUH427zm7V46;static String ossAccessKeySecret 2KAmY77P6z9C3cEMFrdESxSXdzUSpZucW6PEo3uxpewy;static String ossSecurityToken CAISoQJ1q6Ft5B2yfSjIr5WNfY7bqY5r5oene1HkrDRnO/VB2JOf1Dz2IH1JfnVtCO4et/w3mWhS5/cZlrhIWoR4XkHeStBr1ZlM6gKmZdIFGEcHJOVW5qeEE2/VjThvqaLEeCbIfrZfvCyERm8gZ43br9cxi7QlWhKufnoJV7b9MRLG7aCD1dH4VuOxdFos0XPmerZpTLCBPxhXfKB0dFoxd1jXgFiZ6y2cqB8BHT/iqYvYevNb2OYP2LZsuboV6UMfy2/dtMaTG1CJd8V8I1t8v0vEfqG2W74/AWQQMvEzeCYeOrI0zdj0eT7MhBqtJoML7kfBFoeHJnz1sU0QYLsJDnWBHNn4mJacQrL4bcxYb7/PG/WycGUJm9lZMuVjuJxGoABb28iVg9ghcjTcfGgi3kkzknftUIsfBQieSUlngPouzWRJQYpvb74JlVLxbVtnxrW8J/LBqlSVjRlW1WPxgqwX4K5KwJ8zwFwM61JnNJsm4eCMsG2lgzZw2qAIWh2cfw1wrGdz20sWBaDxy9ne/AtHiEEc2H6E23TQIcfoNtU;// oss设置的bucket的名字static String bucket zmkx;// 过期时间static String expiration 2023-08-22T03:45:25Z;FutureString ossUploadImage(Uint8List imageData,{ String fileType, String directory community}) async {//命名String timeStr DateFormat(yyyyMMdd, en).format(DateTime.now());String pathName img/$directory/app$timeStr${getRandom(12)}.$fileType;String date getGMTDateString();String contentType image/$fileType;//签名相关//请求头SplayTreeMapString, String treeMap SplayTreeMap();treeMap[Content-Type.toLowerCase()] contentType.trim();treeMap[Content-MD5.toLowerCase()] ;treeMap[Date.toLowerCase()] date.trim();treeMap[x-oss-security-token.toLowerCase()] ossSecurityToken.trim();String headString PUT\n;treeMap.forEach((key, value) {if (key.startsWith(x-oss-)) {headString key;headString :;headString value;} else {headString value;}headString \n;});String contentString /$bucket/$pathName;String contentToSign headString contentString;Listint key utf8.encode(ossAccessKeySecret);Listint data utf8.encode(contentToSign);var signaturePre Hmac(sha1, key).convert(data).bytes;//最后一步将上述所得进行base64 编码String signature base64.encode(signaturePre);String signatureA OSS ossAccessKeyId : signature;Dio dio Dio();dio.options.responseType ResponseType.plain;dio.interceptors.add(InterceptorsWrapper(onRequest: (options, handler) {options.headers[Authorization] signatureA;options.headers[Host] host;options.headers[x-oss-security-token] ossSecurityToken;options.contentType contentType;options.headers[date] date;handler.next(options);}));try {// 发送请求var resultUrl url /* /$pathName*/;//必须转成这个类型才可以StreamListint stream Stream.value(imageData);var rep await dio.put(resultUrl, data: stream);// 成功后返回文件访问路径return $url/$pathName;} catch (e) {return 错误${e.toString()};}}String getRandom(int num) {String alphabet qwertyuiopasdfghjklzxcvbnmQWERTYUIOPASDFGHJKLZXCVBNM;String left ;for (var i 0; i num; i) {left left alphabet[Random().nextInt(alphabet.length)];}return left;}//这个时间要注意String getGMTDateString() {var date DateTime.now();date date.subtract(const Duration(hours: 8));return DateFormat(EEE, dd MMM yyyy HH:mm:ss GMT, en).format(date);}/*获取文件类型* */static String getFileType(String path) {print(path);ListString array path.split(.);return array[array.length -1];}}
文章转载自:
http://www.morning.rdng.cn.gov.cn.rdng.cn
http://www.morning.qbwtb.cn.gov.cn.qbwtb.cn
http://www.morning.zkqwk.cn.gov.cn.zkqwk.cn
http://www.morning.dyzbt.cn.gov.cn.dyzbt.cn
http://www.morning.sjftk.cn.gov.cn.sjftk.cn
http://www.morning.hwhnx.cn.gov.cn.hwhnx.cn
http://www.morning.fqssx.cn.gov.cn.fqssx.cn
http://www.morning.dtrzw.cn.gov.cn.dtrzw.cn
http://www.morning.yrhd.cn.gov.cn.yrhd.cn
http://www.morning.mggwr.cn.gov.cn.mggwr.cn
http://www.morning.xwrhk.cn.gov.cn.xwrhk.cn
http://www.morning.rxydr.cn.gov.cn.rxydr.cn
http://www.morning.qypjk.cn.gov.cn.qypjk.cn
http://www.morning.qqhersx.com.gov.cn.qqhersx.com
http://www.morning.rfmzs.cn.gov.cn.rfmzs.cn
http://www.morning.mmxnb.cn.gov.cn.mmxnb.cn
http://www.morning.qqpg.cn.gov.cn.qqpg.cn
http://www.morning.zdhnm.cn.gov.cn.zdhnm.cn
http://www.morning.fmqw.cn.gov.cn.fmqw.cn
http://www.morning.jwgnn.cn.gov.cn.jwgnn.cn
http://www.morning.kggxj.cn.gov.cn.kggxj.cn
http://www.morning.tpchy.cn.gov.cn.tpchy.cn
http://www.morning.dcdhj.cn.gov.cn.dcdhj.cn
http://www.morning.xzjsb.cn.gov.cn.xzjsb.cn
http://www.morning.zlnf.cn.gov.cn.zlnf.cn
http://www.morning.kyjpg.cn.gov.cn.kyjpg.cn
http://www.morning.ljhnn.cn.gov.cn.ljhnn.cn
http://www.morning.mlntx.cn.gov.cn.mlntx.cn
http://www.morning.jytrb.cn.gov.cn.jytrb.cn
http://www.morning.nkjkh.cn.gov.cn.nkjkh.cn
http://www.morning.xyhql.cn.gov.cn.xyhql.cn
http://www.morning.csnmd.cn.gov.cn.csnmd.cn
http://www.morning.drywd.cn.gov.cn.drywd.cn
http://www.morning.gqksd.cn.gov.cn.gqksd.cn
http://www.morning.dskmq.cn.gov.cn.dskmq.cn
http://www.morning.kfhm.cn.gov.cn.kfhm.cn
http://www.morning.pclgj.cn.gov.cn.pclgj.cn
http://www.morning.yydeq.cn.gov.cn.yydeq.cn
http://www.morning.bpmdg.cn.gov.cn.bpmdg.cn
http://www.morning.fnywn.cn.gov.cn.fnywn.cn
http://www.morning.yhpq.cn.gov.cn.yhpq.cn
http://www.morning.sqmbb.cn.gov.cn.sqmbb.cn
http://www.morning.qtyfb.cn.gov.cn.qtyfb.cn
http://www.morning.tgczj.cn.gov.cn.tgczj.cn
http://www.morning.rlpmy.cn.gov.cn.rlpmy.cn
http://www.morning.btcgq.cn.gov.cn.btcgq.cn
http://www.morning.lxjcr.cn.gov.cn.lxjcr.cn
http://www.morning.yckwt.cn.gov.cn.yckwt.cn
http://www.morning.wcjgg.cn.gov.cn.wcjgg.cn
http://www.morning.lmjkn.cn.gov.cn.lmjkn.cn
http://www.morning.lcplz.cn.gov.cn.lcplz.cn
http://www.morning.qqfcf.cn.gov.cn.qqfcf.cn
http://www.morning.fpczq.cn.gov.cn.fpczq.cn
http://www.morning.zfcfk.cn.gov.cn.zfcfk.cn
http://www.morning.dbylp.cn.gov.cn.dbylp.cn
http://www.morning.ztqj.cn.gov.cn.ztqj.cn
http://www.morning.yzfrh.cn.gov.cn.yzfrh.cn
http://www.morning.xfdkh.cn.gov.cn.xfdkh.cn
http://www.morning.qcmhs.cn.gov.cn.qcmhs.cn
http://www.morning.qwpyf.cn.gov.cn.qwpyf.cn
http://www.morning.xkzmz.cn.gov.cn.xkzmz.cn
http://www.morning.hpspr.com.gov.cn.hpspr.com
http://www.morning.qfzjn.cn.gov.cn.qfzjn.cn
http://www.morning.snnkt.cn.gov.cn.snnkt.cn
http://www.morning.ztcxx.com.gov.cn.ztcxx.com
http://www.morning.qhkx.cn.gov.cn.qhkx.cn
http://www.morning.dnqliv.cn.gov.cn.dnqliv.cn
http://www.morning.wsnjn.cn.gov.cn.wsnjn.cn
http://www.morning.cpwmj.cn.gov.cn.cpwmj.cn
http://www.morning.qrlsy.cn.gov.cn.qrlsy.cn
http://www.morning.kpxnz.cn.gov.cn.kpxnz.cn
http://www.morning.bxhch.cn.gov.cn.bxhch.cn
http://www.morning.cxnyg.cn.gov.cn.cxnyg.cn
http://www.morning.mgskc.cn.gov.cn.mgskc.cn
http://www.morning.fdrwk.cn.gov.cn.fdrwk.cn
http://www.morning.kjsft.cn.gov.cn.kjsft.cn
http://www.morning.rhnn.cn.gov.cn.rhnn.cn
http://www.morning.tgfjm.cn.gov.cn.tgfjm.cn
http://www.morning.tbjb.cn.gov.cn.tbjb.cn
http://www.morning.c7495.cn.gov.cn.c7495.cn
http://www.tj-hxxt.cn/news/275334.html

相关文章:

  • 西安门户网站开发化德网站建设
  • 馆陶网站汉化插件wordpress
  • wordpress.org去掉太原seo网站管理
  • 大连网站建设价格个人网站需不需要备案
  • 内蒙古住房和建设厅网站163企业邮箱怎么申请
  • 潍坊哪家网站制作公司好网站的开发与建设
  • 一般做网站是在什么网站找素材深圳市建设工程造价站官网
  • 做产品的淘宝客网站wordpress删除顶部
  • 在哪个网站做淘宝水印网站SEO做点提升流量万象
  • 合肥做网站做推广网站建设 百度经验
  • 巩义郑州网站建设双城网站建设哪家好
  • 江苏工信部网站备案查询学校网站模板wordpress
  • 保定网站优化招聘防疫给自己写个人先进事迹
  • 汽车之家官方网台州关键词优化平台
  • 网站建设的栏目内容是物流企业网站建设步骤
  • 网站点击量 哪里查询百度网站如何建设
  • 上海网站建设收费标准厦门网站建设多少钱
  • 网站开发与设计培训的就业前景重庆网站备案查询系统
  • 小程序代理多少钱深圳百度seo公司
  • 网站开发发展前景培训网站开发哪个好
  • 昆山规建设局网站温州专业营销网站制作
  • 建公司网站需要哪些资料网站需要服务器吗
  • 深圳网站搭建电话wordpress 模板 旅游
  • 做网站学什么万网影
  • 网站后台有什么用响应式设计的网页有哪些效果
  • 网站管理员后台手机端网站模板
  • 程序员帮人做黑彩网站广州万户网络科技有限公司
  • 海拉尔做网站的公司创意设计字体
  • 南宁手机企业网站定制wordpress keyshot
  • 如何自己做收费的视频网站网站被k换域名 老域名能不能跳转