html布局,比较简单,模仿微信的:

  1. <div class="dynamic_images">
  2. <ul>
  3. <!--<li><img src="data:images/cbd.jpg"></li>-->
  4. <li><img src="data:images/iconfont-tianjia.png" id="addnew"></li>
  5. <!--<li><span class="mui-icon iconfont icon-jia2" style="font-size: 28px;"></span></li>-->
  6. </ul>
  7. </div>

页面初始化的一些操作:

  1. document.addEventListener("plusready", plusReady, false);
  2. function plusReady() {
  3. document.getElementById("addnew").addEventListener("tap", function() {
  4. showActionSheet();//拍照还是相册
  5. });
  6. document.getElementById("fabiao").addEventListener("tap", function() {
  7. upload();//上传文件
  8. });
  9. plus.nativeUI.closeWaiting();
  10. }

页面中js部分

  1. var f1 = null;
  2. var picarr = new Array();
  3. var basearr = new Array();
  4. var lat = "",
  5. longt = "";
  6. var files = [];
  7. // 上传文件
  8. function upload() {
  9. var wt = plus.nativeUI.showWaiting();
  10. var task = plus.uploader.createUpload(server + "?action=dynamicadd", {
  11. method: "POST"
  12. },
  13. function(t, status) { //上传完成
  14. if (status == 200) {
  15. //                      console.log("上传成功:" + t.responseText);
  16. mui.toast("发表成功");
  17. //插入本地数据库
  18. wt.close();
  19. mui.back();
  20. } else {
  21. console.log("上传失败:" + status);
  22. wt.close();
  23. }
  24. }
  25. );
  26. var title = $("#tbxtitle").val();
  27. if (title.length < 1) {
  28. wt.close();
  29. mui.toast("内容不能为空");
  30. } else {
  31. task.addData("title", title);
  32. task.addData("uid", getUid());
  33. task.addData("userid", plus.storage.getItem("policeid"));
  34. //task.addData("lat", lat.toString());
  35. //task.addData("longt", longt.toString());
  36. //              console.log("准备上传"+files.length+"个图片");
  37. for (var i = 0; i < files.length; i++) {
  38. var f = files[i];
  39. //                  console.log("准备上传的图片路径:"+f.path);
  40. task.addFile(f.path, {
  41. key: f.name
  42. });
  43. }
  44. task.start();
  45. }
  46. }
  47. // 添加文件
  48. var index = 1;
  49. var newUrlAfterCompress;
  50. function appendFile(p) {
  51. files.push({
  52. name: "uploadkey" + index,//这个值服务器会用到,作为file的key
  53. path: p
  54. });
  55. index++;
  56. }
  57. // 产生一个随机数
  58. function getUid() {
  59. return Math.floor(Math.random() * 100000000 + 10000000).toString();
  60. }
  61. function getposition() {
  62. plus.geolocation.getCurrentPosition(function(p) {
  63. var codns = p.coords; // 获取地理坐标信息;
  64. lat = codns.latitude; //获取到当前位置的纬度;
  65. longt = codns.longitude; //获取到当前位置的经度
  66. }, function(e) {
  67. //alert("获取百度定位位置信息失败:" + e.message);
  68. }, {
  69. provider: 'baidu'
  70. });
  71. }
  72. function galleryImgs() { // 从相册中选择图片
  73. plus.gallery.pick(function(e) {
  74. $(".dynamic_images ul li").remove(".pickimg");
  75. //              console.log("选择了"+e.files.length+"个图片");
  76. for (var i = 0; i < e.files.length; i++) {
  77. if (i < 9) {
  78. picarr[i] = e.files[i];
  79. $(".dynamic_images ul").prepend("<li class='pickimg'><img src='" + e.files[i] + "' /></li>");
  80. var dstname="_downloads/"+getUid()+".jpg";//设置压缩后图片的路径
  81. newUrlAfterCompress=compressImage(e.files[i],dstname);
  82. appendFile(dstname);
  83. //console.log(e.files[i]);
  84. //console.log(dstname);
  85. }
  86. }
  87. }, function(e) {
  88. console.log("取消选择图片");
  89. }, {
  90. filter: "image",
  91. multiple: true
  92. });
  93. }
  94. //压缩图片,这个比较变态的方法,无法return
  95. function compressImage(src,dstname) {
  96. //var dstname="_downloads/"+getUid()+".jpg";
  97. plus.zip.compressImage({
  98. src: src,
  99. dst: dstname,
  100. overwrite:true,
  101. quality: 20
  102. },
  103. function(event) {
  104. //console.log("Compress success:"+event.target);
  105. return event.target;
  106. },
  107. function(error) {
  108. console.log(error);
  109. return src;
  110. //alert("Compress error!");
  111. });
  112. }
  113. //旋转图片,本文没用到
  114. function rotateImage() {
  115. plus.zip.compressImage({
  116. src: "_www/a.jpg",
  117. dst: "_doc/a.jpg",
  118. rotate: 90 // 旋转90度
  119. },
  120. function() {
  121. alert("Compress success!");
  122. },
  123. function(error) {
  124. alert("Compress error!");
  125. });
  126. }
  127. function showActionSheet() {
  128. var bts = [{
  129. title: "拍照"
  130. }, {
  131. title: "从相册选择"
  132. }];
  133. plus.nativeUI.actionSheet({
  134. cancel: "取消",
  135. buttons: bts
  136. },
  137. function(e) {
  138. if (e.index == 1) {
  139. getImage();
  140. } else if (e.index == 2) {
  141. galleryImgs();
  142. }
  143. }
  144. );
  145. }
  146. //拍照
  147. function getImage() {
  148. var cmr = plus.camera.getCamera();
  149. cmr.captureImage(function(p) {
  150. plus.io.resolveLocalFileSystemURL(p, function(entry) {
  151. var localurl = entry.toLocalURL(); //
  152. $(".dynamic_images ul li").remove(".pickimg");
  153. $(".dynamic_images ul").prepend("<li class='pickimg'><img src='" + localurl + "' /></li>");
  154. });
  155. });
  156. }

服务端asp.net版

  1. string file = "";
  2. int count = Request.Files.Count;
  3. for (int i = 0; i < count; i++)
  4. {
  5. int l = Request.Files["uploadkey" + (i + 1)].ContentLength;
  6. byte[] buffer = new byte[l];
  7. Stream s = Request.Files["uploadkey" + (i + 1)].InputStream;
  8. System.Drawing.Bitmap image = new System.Drawing.Bitmap(s);
  9. string imgname = Common.GetGuid() + ".jpg";
  10. string path = "Images/" + DateTime.Now.ToString("yyyyMMdd") + "/";
  11. if (!Directory.Exists(HttpContext.Current.Server.MapPath(path)))
  12. {
  13. System.IO.Directory.CreateDirectory(HttpContext.Current.Server.MapPath(path));
  14. }
  15. image.Save(Server.MapPath(path + "/" + imgname));
  16. }

速度非常快,测试过,如果不压缩速度没有明显的下降,但是考虑到显示时候加载的问题,还是进行了压缩

hbuilder mui uploader图片上传到服务器完整版(ASP.NET)的更多相关文章

  1. PHP图片上传程序(完整版)

    从PHP100上搜刮来的,功能很强大.几乎考虑到了每个细节,与大家分享!~~~ <meta http-equiv="Content-Type" content="t ...

  2. MVC图片上传、浏览、删除 ASP.NET MVC之文件上传【一】(八) ASP.NET MVC 图片上传到服务器

    MVC图片上传.浏览.删除   1.存储配置信息 在web.config中,添加配置信息节点 <appSettings> <add key="UploadPath" ...

  3. php form 图片上传至服务器上

    本文章也是写给自己看的,因为写的很简洁,连判断都没有,只是直接实现了能上传的功能. 前台: <form action="upload.php" method="PO ...

  4. 使用canvas给图片添加水印, canvas转换base64,,canvas,图片,base64等转换成二进制文档流的方法,并将合成的图片上传到服务器,

    一,前端合成带水印的图片 一般来说,生成带水印的图片由后端生成,但不乏有时候需要前端来处理.当然,前端处理图片一般不建议,一方面js的处理图片的方法不全,二是有些老版本的浏览器对canvas的支持度不 ...

  5. 根目录97 <input file>标签,把图片上传到服务器(跟增删改查一起实现)

    首先来个简单的html页面: enctype="multipart/form-data" encoding="multipart/form-data" acti ...

  6. word图片上传到服务器

    参考:http://blog.ncmem.com/wordpress/2019/08/07/word%e5%9b%be%e7%89%87%e4%b8%8a%e4%bc%a0%e5%88%b0%e6%9 ...

  7. ckeditor如何能实现直接粘贴把图片上传到服务器中?

    在之前在工作中遇到在富文本编辑器中粘贴图片不能展示的问题,于是各种网上扒拉,终于找到解决方案,在这里感谢一下知乎中众大神以及TheViper. 通过知乎提供的思路找到粘贴的原理,通过TheViper找 ...

  8. Express+MySQL实现图片上传到服务器并把路径保存到数据库中

    demo准备:mysql5.7.20 express4.0 处理图片文件的中间件Multer 先搭建服务器并展示html页面 const express = require("express ...

  9. 富文本编辑器CKeditor的配置和图片上传,看完不后悔

    CKeditor是一款富文本编辑器,本文将用极为简单的方式介绍一下它的使用和困扰大家很久的图片上传问题,要有耐心. 第一步:如何使用 1.官网下载https://ckeditor.com/ckedit ...

随机推荐

  1. State of Serverless

    Some quick thoughts from Serverlessconf, Austin in April 2017 I wanted to take a bit of time to writ ...

  2. ASP.NET MVC4 HtmlHelper扩展类,实现分页功能 @Html.ShowPageNavigate

    本文主要做了一个HtmHelper类的分页扩展函数,方便在视图中调用,有需要的朋友可以参考一下,希望对大家有所帮助. 1.扩展HtmlHelper类方法ShowPageNavigate output. ...

  3. 深度学习Github排名,很不错的介绍

    今天看到这篇文章,把深度学习github排名靠前的项目,介绍了一下,很不错: https://blog.csdn.net/yH0VLDe8VG8ep9VGe/article/details/81611 ...

  4. 算法: 实现LRU缓存,读取、写入O(1)实现

    这题应该见的不少了,写写记录一下. 实现该功能分析: (1) O(1) 时间完成查找,那除了 hash 别无选择. (2) LRU 最近最少使用算法,为了方便数据的淘汰.需要对最近访问的数据放未访问数 ...

  5. CSS-div高度100%设置问题

    div常用的属性width和height,有的时候如果我们需要让div的高度是整个屏幕的高度,设置height:100%发现并没有什么作用,并不是这样设置不对,而是w3c规范中关于百分比的设置是相对于 ...

  6. iOS开发-16进制颜色转换

    项目中经常会用到颜色转换,有的是通过十六进制转成数字转颜色,想简单的点直接通过字符串转一下,简单扩展了一下分类UIColor,代码如下: +(UIColor *)colorWithHex:(NSStr ...

  7. jquery.cookie 使用方法

    一个轻量级的cookie 插件,可以读取.写入.删除 cookie. jquery.cookie.js 的配置 首先包含jQuery的库文件,在后面包含 jquery.cookie.js 的库文件. ...

  8. CSDN日报20170226——《你离心想事成仅仅差一个计划》

    [程序人生] 你离心想事成仅仅差一个计划 作者:安晓辉 从目标怎样导出工作计划.我们会以"出版一本小说"为例来解说计划的形成过程. 在開始之前.我们先来说明一个概念:目标的两种类型 ...

  9. nodejs pipe实现大文件拷贝

    原文: http://nqdeng.github.io/7-days-nodejs/ --------------------------------------------------------- ...

  10. Redis:解决分布式高并发修改同一个Key的问题

    本篇文章是通过watch(监控)+mutil(事务)实现应用于在分布式高并发处理等相关场景.下边先通过redis-cli.exe来测试多个线程修改时,遇到问题及解决问题. 高并发下修改同一个key遇到 ...