hbuilder mui uploader图片上传到服务器完整版(ASP.NET)
html布局,比较简单,模仿微信的:
- <div class="dynamic_images">
- <ul>
- <!--<li><img src="data:images/cbd.jpg"></li>-->
- <li><img src="data:images/iconfont-tianjia.png" id="addnew"></li>
- <!--<li><span class="mui-icon iconfont icon-jia2" style="font-size: 28px;"></span></li>-->
- </ul>
- </div>
页面初始化的一些操作:
- document.addEventListener("plusready", plusReady, false);
- function plusReady() {
- document.getElementById("addnew").addEventListener("tap", function() {
- showActionSheet();//拍照还是相册
- });
- document.getElementById("fabiao").addEventListener("tap", function() {
- upload();//上传文件
- });
- plus.nativeUI.closeWaiting();
- }
页面中js部分
- var f1 = null;
- var picarr = new Array();
- var basearr = new Array();
- var lat = "",
- longt = "";
- var files = [];
- // 上传文件
- function upload() {
- var wt = plus.nativeUI.showWaiting();
- var task = plus.uploader.createUpload(server + "?action=dynamicadd", {
- method: "POST"
- },
- function(t, status) { //上传完成
- if (status == 200) {
- // console.log("上传成功:" + t.responseText);
- mui.toast("发表成功");
- //插入本地数据库
- wt.close();
- mui.back();
- } else {
- console.log("上传失败:" + status);
- wt.close();
- }
- }
- );
- var title = $("#tbxtitle").val();
- if (title.length < 1) {
- wt.close();
- mui.toast("内容不能为空");
- } else {
- task.addData("title", title);
- task.addData("uid", getUid());
- task.addData("userid", plus.storage.getItem("policeid"));
- //task.addData("lat", lat.toString());
- //task.addData("longt", longt.toString());
- // console.log("准备上传"+files.length+"个图片");
- for (var i = 0; i < files.length; i++) {
- var f = files[i];
- // console.log("准备上传的图片路径:"+f.path);
- task.addFile(f.path, {
- key: f.name
- });
- }
- task.start();
- }
- }
- // 添加文件
- var index = 1;
- var newUrlAfterCompress;
- function appendFile(p) {
- files.push({
- name: "uploadkey" + index,//这个值服务器会用到,作为file的key
- path: p
- });
- index++;
- }
- // 产生一个随机数
- function getUid() {
- return Math.floor(Math.random() * 100000000 + 10000000).toString();
- }
- function getposition() {
- plus.geolocation.getCurrentPosition(function(p) {
- var codns = p.coords; // 获取地理坐标信息;
- lat = codns.latitude; //获取到当前位置的纬度;
- longt = codns.longitude; //获取到当前位置的经度
- }, function(e) {
- //alert("获取百度定位位置信息失败:" + e.message);
- }, {
- provider: 'baidu'
- });
- }
- function galleryImgs() { // 从相册中选择图片
- plus.gallery.pick(function(e) {
- $(".dynamic_images ul li").remove(".pickimg");
- // console.log("选择了"+e.files.length+"个图片");
- for (var i = 0; i < e.files.length; i++) {
- if (i < 9) {
- picarr[i] = e.files[i];
- $(".dynamic_images ul").prepend("<li class='pickimg'><img src='" + e.files[i] + "' /></li>");
- var dstname="_downloads/"+getUid()+".jpg";//设置压缩后图片的路径
- newUrlAfterCompress=compressImage(e.files[i],dstname);
- appendFile(dstname);
- //console.log(e.files[i]);
- //console.log(dstname);
- }
- }
- }, function(e) {
- console.log("取消选择图片");
- }, {
- filter: "image",
- multiple: true
- });
- }
- //压缩图片,这个比较变态的方法,无法return
- function compressImage(src,dstname) {
- //var dstname="_downloads/"+getUid()+".jpg";
- plus.zip.compressImage({
- src: src,
- dst: dstname,
- overwrite:true,
- quality: 20
- },
- function(event) {
- //console.log("Compress success:"+event.target);
- return event.target;
- },
- function(error) {
- console.log(error);
- return src;
- //alert("Compress error!");
- });
- }
- //旋转图片,本文没用到
- function rotateImage() {
- plus.zip.compressImage({
- src: "_www/a.jpg",
- dst: "_doc/a.jpg",
- rotate: 90 // 旋转90度
- },
- function() {
- alert("Compress success!");
- },
- function(error) {
- alert("Compress error!");
- });
- }
- function showActionSheet() {
- var bts = [{
- title: "拍照"
- }, {
- title: "从相册选择"
- }];
- plus.nativeUI.actionSheet({
- cancel: "取消",
- buttons: bts
- },
- function(e) {
- if (e.index == 1) {
- getImage();
- } else if (e.index == 2) {
- galleryImgs();
- }
- }
- );
- }
- //拍照
- function getImage() {
- var cmr = plus.camera.getCamera();
- cmr.captureImage(function(p) {
- plus.io.resolveLocalFileSystemURL(p, function(entry) {
- var localurl = entry.toLocalURL(); //
- $(".dynamic_images ul li").remove(".pickimg");
- $(".dynamic_images ul").prepend("<li class='pickimg'><img src='" + localurl + "' /></li>");
- });
- });
- }
服务端asp.net版
- string file = "";
- int count = Request.Files.Count;
- for (int i = 0; i < count; i++)
- {
- int l = Request.Files["uploadkey" + (i + 1)].ContentLength;
- byte[] buffer = new byte[l];
- Stream s = Request.Files["uploadkey" + (i + 1)].InputStream;
- System.Drawing.Bitmap image = new System.Drawing.Bitmap(s);
- string imgname = Common.GetGuid() + ".jpg";
- string path = "Images/" + DateTime.Now.ToString("yyyyMMdd") + "/";
- if (!Directory.Exists(HttpContext.Current.Server.MapPath(path)))
- {
- System.IO.Directory.CreateDirectory(HttpContext.Current.Server.MapPath(path));
- }
- image.Save(Server.MapPath(path + "/" + imgname));
- }
速度非常快,测试过,如果不压缩速度没有明显的下降,但是考虑到显示时候加载的问题,还是进行了压缩
hbuilder mui uploader图片上传到服务器完整版(ASP.NET)的更多相关文章
- PHP图片上传程序(完整版)
从PHP100上搜刮来的,功能很强大.几乎考虑到了每个细节,与大家分享!~~~ <meta http-equiv="Content-Type" content="t ...
- MVC图片上传、浏览、删除 ASP.NET MVC之文件上传【一】(八) ASP.NET MVC 图片上传到服务器
MVC图片上传.浏览.删除 1.存储配置信息 在web.config中,添加配置信息节点 <appSettings> <add key="UploadPath" ...
- php form 图片上传至服务器上
本文章也是写给自己看的,因为写的很简洁,连判断都没有,只是直接实现了能上传的功能. 前台: <form action="upload.php" method="PO ...
- 使用canvas给图片添加水印, canvas转换base64,,canvas,图片,base64等转换成二进制文档流的方法,并将合成的图片上传到服务器,
一,前端合成带水印的图片 一般来说,生成带水印的图片由后端生成,但不乏有时候需要前端来处理.当然,前端处理图片一般不建议,一方面js的处理图片的方法不全,二是有些老版本的浏览器对canvas的支持度不 ...
- 根目录97 <input file>标签,把图片上传到服务器(跟增删改查一起实现)
首先来个简单的html页面: enctype="multipart/form-data" encoding="multipart/form-data" acti ...
- 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 ...
- ckeditor如何能实现直接粘贴把图片上传到服务器中?
在之前在工作中遇到在富文本编辑器中粘贴图片不能展示的问题,于是各种网上扒拉,终于找到解决方案,在这里感谢一下知乎中众大神以及TheViper. 通过知乎提供的思路找到粘贴的原理,通过TheViper找 ...
- Express+MySQL实现图片上传到服务器并把路径保存到数据库中
demo准备:mysql5.7.20 express4.0 处理图片文件的中间件Multer 先搭建服务器并展示html页面 const express = require("express ...
- 富文本编辑器CKeditor的配置和图片上传,看完不后悔
CKeditor是一款富文本编辑器,本文将用极为简单的方式介绍一下它的使用和困扰大家很久的图片上传问题,要有耐心. 第一步:如何使用 1.官网下载https://ckeditor.com/ckedit ...
随机推荐
- mysql group by 报错异常解决
mysql报错及其解决方式 1.在使用group by 查询一张表的数据的时候:select date,time,max(delaytime) as delaytime,sum(delaynum) a ...
- Asp.Net Core Web相对路径、绝对路径整理
一.相对路径 1.关于Asp.Net Core中的相对路径主要包括两个部分:一.Web根目录,即当前网站的目录为基础:二.内容目录wwwroot文件夹,对于静态文件都放在这个目录. 2.获取控制器,A ...
- securecrt 多窗口执行命令
首先在SecureCRT里同时打开多个服务器session(必须是有相同目录结构) 选择菜单栏View –>Chat Windows 对号,此时所有服务器连接下方应该有个空白的部分 在空白的部分 ...
- Table does not have the identity property. Cannot perform SET operation.
Table does not have the identity property. Cannot perform SET operation. 解决: set IDENTITY_INSERT ...
- java操作mongodb(连接池)(转)
原文链接: java操作mongodb(连接池) Mongo的实例其实就是一个数据库连接池,这个连接池里默认有10个链接.我们没有必要重新实现这个链接池,但是我们可以更改这个连接池的配置.因为Mong ...
- SGU536 Berland Chess
棋盘上白子只有一个国王 黑子给出 各子遵从国际象棋的走法 黑子不动,白子不能走进黑子的攻击范围以内 问白字能不能吃掉所有的黑子 直接搜索就好了,各子状态用二进制表示 不过每个子被吃之后攻击范围会改变 ...
- Html.AntiForgeryToken() 防止CSRF攻击 的AJaX应用
有关Html.AntiForgeryToken()的使用其实网上的说明很多了,比如http://blog.csdn.net/cpytiger/article/details/8781457 那么我们写 ...
- Hadoop视频教程汇总
一 慕课网 1.Hadoop大数据平台架构与实践--基础篇(已学习) 链接:https://www.imooc.com/learn/391 2.Hadoop进阶(已学习) 链接:https://www ...
- eclipse 创建普通maven项目
- oracle归档日志的操作
oracle利用重做日志文件记录对数据库的操作.可是重做日志文件组是循环使用的,当所有的日志文件都被填满时,系统自己主动切换到第一组日志文件,当然数据库管理员也能够使用命令手 ...