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("<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>");
    });
  });
}

页面初始化的一些操作:

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布局,比较简单,模仿微信的:

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

  </ul>
</div>

服务端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,其实没什么样式的:

<style type="text/css">
  .dynamic_images {
    width: 100%;
  } 

  .dynamic_images ul {
    margin: 0;
    padding: 0;
  } 

  .dynamic_images ul li {
    float: left;
    list-style: none;
    width: 25%;
  } 

  .dynamic_images ul li img {
    width: 98%;
    height: 80px;
  }
</style>

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

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • 用Fine Uploader+ASP.NET MVC实现ajax文件上传[代码示例]

    This project attempts to achieve a user-friendly file-uploading experience over the web. It's built as a Javascript plugin for developers looking to incorporate file-uploading into their website. Fine Uploader 不依赖于 jQuery,也就是说不引用jquery.js,也可以正常使用.同时,

  • jquery上传插件fineuploader上传文件使用方法(jquery图片上传插件)

    特点: 1.不依赖与jquery 2.而且,好看些吧..支持很多实例,上传成功后.会有一个回调函数.比如缩略图地址显示出来 用法: 复制代码 代码如下: <link href="http://fineuploader.com/source/fineuploader-3.9.1.min.css" rel="stylesheet" /><script src="http://fineuploader.com/source/fineupload

  • jquery组件WebUploader文件上传用法详解

    WebUploader是由Baidu WebFE(FEX)团队开发的一个简单的以HTML5为主,FLASH为辅的现代文件上传组件,下文来为各位演示一下关于jquery WebUploader文件上传组件的用法. 使用WebUploader还可以批量上传文件.支持缩略图等等众多参数选项可设置,以及多个事件方法可调用,你可以随心所欲的定制你要的上传组件. 接下来我以图片上传实例,给大家讲解如何使用WebUploader. HTML 我们首先将css和相关js文件加载. <link rel="s

  • Fine Uploader文件上传组件应用介绍

    最近在处理后台数据时需要实现文件上传.考虑到对浏览器适配上采用Fine Uploader. Fine Uploader 采用ajax方式实现对文件上传.同时在浏览器中直接支持文件拖拽[对浏览器版本有要求类似IE版本必须是9或是更高的IE10].在不同浏览器中提供统一用户体验.该组件基本覆盖目前所有主流浏览器.同时没有任何第三方组件依赖.相当Clear.在服务器端已经覆盖支持了ASP.NET/ColdFusion/Java/Node.js/Perl/PHP/Python. 对上传细节类似限制文件大

  • Web Uploader文件上传插件使用详解

    WebUploader文件上传组件在现代的浏览器里面能充分发挥HTML5的优势,同时又不摒弃主流IE浏览器,沿用原来的FLASH运行时,兼容IE6+,iOS 6+, android 4+.两套运行时,同样的调用方式,可供用户任意选用. 采用大文件分片并发上传,极大的提高了文件上传效率. 一.功能介绍 分片.并发 分片与并发结合,将一个大文件分割成多块,并发上传,极大地提高大文件的上传速度. 当网络问题导致传输错误时,只需要重传出错分片,而不是整个文件.另外分片传输能够更加实时的跟踪上传进度. 预

  • 使用jQuery Uploader显示文件上传进度

    请到 Download 下载资源 的 JQueryElement 示例下载一节下载示例代码 (我们下载)本文将说明 Uploader 控件的功能以及使用过程中的注意事项和技巧, 目录如下: * 准备 * 创建保存页面 * 添加 FileUpload 控件 * 设置 EnableSessionState * 调用 Uploader 的 Save 方法 * 创建获取进度的页面 * 创建上传页面 * 设置保存页面 * 设置获取进度的页面 * 上传 * 隐藏保存页面 准备 请确保已经在 Download

  • 推荐三款不错的图片压缩上传插件(webuploader、localResizeIMG4、LUploader)

    涉及到网页图片的交互,少不了图片的压缩上传,相关的插件有很多,相信大家都有用过,这里我就推荐三款,至于好处就仁者见仁喽: 1.名气最高的WebUploader,由Baidu FEX 团队开发,以H5为主,FLASH为辅,兼容 IE6+,iOS 6+, android 4+,采用大文件分片并发上传,极大的提高了文件上传效率,看了官方文档就知道,能满足你所需要的所有功能,一言以蔽之,大而全:至于缺点,大概就是插件体积太大了,自带样式文件,而且还要依赖jquery类库.详细的教程网上俯拾即是,这里我就

  • php结合web uploader插件实现分片上传文件

    最近研究了下大文件上传的方法,找到了webuploader js 插件进行大文件上传,大家也可以参考这篇文章进行学习:<Web Uploader文件上传插件使用详解> 使用 使用webuploader分成简单直选要引入 <!--引入CSS--> <link rel="stylesheet" type="text/css" href="webuploader文件夹/webuploader.css"> <!-

  • 使用Web Uploader实现多文件上传

    引入资源 使用Web Uploader文件上传需要引入三种资源:JS, CSS, SWF. <!--引入CSS--> <link rel="stylesheet" type="text/css" href="webuploader文件夹/webuploader.css"> <!--引入JS--> <script type="text/javascript" src="webu

  • 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(serve

  • Python实现简单网页图片抓取完整代码实例

    利用python抓取网络图片的步骤是: 1.根据给定的网址获取网页源代码 2.利用正则表达式把源代码中的图片地址过滤出来 3.根据过滤出来的图片地址下载网络图片 以下是比较简单的一个抓取某一个百度贴吧网页的图片的实现: # -*- coding: utf-8 -*- # feimengjuan import re import urllib import urllib2 #抓取网页图片 #根据给定的网址来获取网页详细信息,得到的html就是网页的源代码 def getHtml(url): pag

  • asp.net Web Services上传和下载文件(完整代码)第1/2页

    下面,我们就分别介绍如何通过Web Services从服务器下载文件到客户端和从客户端通过Web Services上载文件到服务器.一:通过Web Services显示和下载文件 我们这里建立的Web Services的名称为GetBinaryFile,提供两个公共方法:分别是GetImage()和GetImageType(),前者返回二进制文件字节数组,后者返回文件类型,其中,GetImage()方法有一个参数,用来在客户端选择要显示或下载的文件名字.这里我们所显示和下载的文件可以不在虚拟目录

  • Python tkinter实现图片标注功能(完整代码)

    .tkinter tkinter是Python下面向tk的图形界面接口库,可以方便地进行图形界面设计和交互操作编程.tkinter的优点是简单易用.与Python的结合度好.tkinter在Python 3.x下默认集成,不需要额外的安装操作:不足之处为缺少合适的可视化界面设计工具,需要通过代码来完成窗口设计和元素布局. Python tkinter实现图片标注代码,代码如下所述: #!/usr/bin/python # -*- coding: UTF-8 -*- import os impor

  • 批处理(ftp)上传文件到服务器的代码

    backup.bat 复制代码 代码如下: backup.batftp -n -s:"d:\userweb\upbak.ftp" upbak.ftp 复制代码 代码如下: upbak.ftpopen 192.168.1.19 user webbakusername bakpassword!@#123 lcd D:\userweb\www.gsta.cn\CMS\Databases bin prompt mput *.* bye quit exit

  • iOS 使用AFN上传视频到服务器示例代码

    这里介绍用AFN上传本地拍摄的视频到服务端. 整体思路:拿到视频资源,先转为mp4,写进沙盒,然后上传,上传成功后要记得删除沙盒中的文件. 压缩导出视频 //视频转换为MP4 //转码操作... _hud.mode = MBProgressHUDModeIndeterminate; _hud.labelText = @"转码中..."; AVURLAsset *avAsset = [AVURLAsset URLAssetWithURL:_filePathURL options:nil]

  • JAVA技术实现上传下载文件到FTP服务器(完整)

    具体详细介绍请看下文: 在使用文件进行交互数据的应用来说,使用FTP服务器是一个很好的选择.本文使用Apache Jakarta Commons Net(commons-net-3.3.jar) 基于FileZilla Server服务器实现FTP服务器上文件的上传/下载/删除等操作. 关于FileZilla Server服务器的详细搭建配置过程,详情请见 FileZilla Server安装配置教程 .之前有朋友说,上传大文件(几百M以上的文件)到FTP服务器时会重现无法重命名的问题,但本人亲

  • ThinkPHP5 通过ajax插入图片并实时显示(完整代码)

    单张图片上传 展示图: 完整代码: <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>ajax上传图片练习</title> <script src="http://libs.baidu.com/jquery/1.9.0/jquery.js"></script> <style type="

  • Android将图片上传到php服务器的实例代码

    layout中很普通,就是两个button和一个ImageView <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height=&q

  • jQuery插件jcrop+Fileapi完美实现图片上传+裁剪+预览的代码分享

    网页端 裁剪图片,不需要经过服务器. 这个是用 https://github.com/mailru/FileAPI 框架实现的.配合jcrop. 高级浏览器 使用 canvas 裁剪,ie6 7 8使用 flash过度. 核心代码: var el = $('input').get(0); seajs.use(['gallery/jcrop/0.9.12/jcrop.css','gallery/jcrop/0.9.12/jcrop.js'] ,function(){ FileAPI.event.o

随机推荐