0

0

uploader秒传图片到服务器方法详解

小云云

小云云

发布时间:2018-01-17 13:47:46

|

2341人浏览过

|

来源于php中文网

原创

本文主要为大家详细介绍了uploader秒传图片到服务器的完整代码,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能帮助到大家。

先看看效果图:

页面中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("
  • uploader秒传图片到服务器方法详解
  • "); 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("
  • uploader秒传图片到服务器方法详解
  • "); }); }); }

    页面初始化的一些操作:


    document.addEventListener("plusready", plusReady, false); 
     
    function plusReady() { 
      document.getElementById("addnew").addEventListener("tap", function() { 
        showActionSheet();//拍照还是相册 
      }); 
      document.getElementById("fabiao").addEventListener("tap", function() { 
        upload();//上传文件 
      }); 
      plus.nativeUI.closeWaiting(); 
     
    }

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


    • uploader秒传图片到服务器方法详解

    服务端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)); 
    }

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

    后补的CSS,其实没什么样式的:

    快剪辑
    快剪辑

    国内⼀体化视频⽣产平台

    下载


    加号是字体:http://iconfont.cn/
    头部样式是二次修改HB的样式,如果你不是用HB开发的话,自己写CSS就行了。

    相关推荐:

    实例讲解H5移动开发Ajax上传多张Base64格式图片到服务器

    实例详解微信小程序上传图片到服务器

    js实现图片粘贴上传到服务器并展示的实例

    热门AI工具

    更多
    DeepSeek
    DeepSeek

    幻方量化公司旗下的开源大模型平台

    豆包大模型
    豆包大模型

    字节跳动自主研发的一系列大型语言模型

    通义千问
    通义千问

    阿里巴巴推出的全能AI助手

    腾讯元宝
    腾讯元宝

    腾讯混元平台推出的AI助手

    文心一言
    文心一言

    文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

    讯飞写作
    讯飞写作

    基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

    即梦AI
    即梦AI

    一站式AI创作平台,免费AI图片和视频生成。

    ChatGPT
    ChatGPT

    最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

    相关专题

    更多
    Golang处理数据库错误教程合集
    Golang处理数据库错误教程合集

    本专题整合了Golang数据库错误处理方法、技巧、管理策略相关内容,阅读专题下面的文章了解更多详细内容。

    67

    2026.02.06

    java多线程方法汇总
    java多线程方法汇总

    本专题整合了java多线程面试题、实现函数、执行并发相关内容,阅读专题下面的文章了解更多详细内容。

    32

    2026.02.06

    1688阿里巴巴货源平台入口与批发采购指南
    1688阿里巴巴货源平台入口与批发采购指南

    本专题整理了1688阿里巴巴批发进货平台的最新入口地址与在线采购指南,帮助用户快速找到官方网站入口,了解如何进行批发采购、货源选择以及厂家直销等功能,提升采购效率与平台使用体验。

    489

    2026.02.06

    快手网页版入口与电脑端使用指南 快手官方短视频观看入口
    快手网页版入口与电脑端使用指南 快手官方短视频观看入口

    本专题汇总了快手网页版的最新入口地址和电脑版使用方法,详细提供快手官网直接访问链接、网页端操作教程,以及如何无需下载安装直接观看短视频的方式,帮助用户轻松浏览和观看快手短视频内容。

    265

    2026.02.06

    C# 多线程与异步编程
    C# 多线程与异步编程

    本专题深入讲解 C# 中多线程与异步编程的核心概念与实战技巧,包括线程池管理、Task 类的使用、async/await 异步编程模式、并发控制与线程同步、死锁与竞态条件的解决方案。通过实际项目,帮助开发者掌握 如何在 C# 中构建高并发、低延迟的异步系统,提升应用性能和响应速度。

    18

    2026.02.06

    Python 微服务架构与 FastAPI 框架
    Python 微服务架构与 FastAPI 框架

    本专题系统讲解 Python 微服务架构设计与 FastAPI 框架应用,涵盖 FastAPI 的快速开发、路由与依赖注入、数据模型验证、API 文档自动生成、OAuth2 与 JWT 身份验证、异步支持、部署与扩展等。通过实际案例,帮助学习者掌握 使用 FastAPI 构建高效、可扩展的微服务应用,提高服务响应速度与系统可维护性。

    29

    2026.02.06

    JavaScript 异步编程与事件驱动架构
    JavaScript 异步编程与事件驱动架构

    本专题深入讲解 JavaScript 异步编程与事件驱动架构,涵盖 Promise、async/await、事件循环机制、回调函数、任务队列与微任务队列、以及如何设计高效的异步应用架构。通过多个实际示例,帮助开发者掌握 如何处理复杂异步操作,并利用事件驱动设计模式构建高效、响应式应用。

    14

    2026.02.06

    java连接字符串方法汇总
    java连接字符串方法汇总

    本专题整合了java连接字符串教程合集,阅读专题下面的文章了解更多详细操作。

    69

    2026.02.05

    java中fail含义
    java中fail含义

    本专题整合了java中fail的含义、作用相关内容,阅读专题下面的文章了解更多详细内容。

    32

    2026.02.05

    热门下载

    更多
    网站特效
    /
    网站源码
    /
    网站素材
    /
    前端模板

    精品课程

    更多
    相关推荐
    /
    热门推荐
    /
    最新课程
    Node.js 教程
    Node.js 教程

    共57课时 | 10.7万人学习

    ASP 教程
    ASP 教程

    共34课时 | 4.7万人学习

    Python 教程
    Python 教程

    共137课时 | 8.7万人学习

    关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
    php中文网:公益在线php培训,帮助PHP学习者快速成长!
    关注服务号 技术交流群
    PHP中文网订阅号
    每天精选资源文章推送

    Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号