这里采用C#模拟表单提交,实现LBS云端删除和csv格式文件的上传。

删除:

  1. /// <summary>
  2. /// 从LBS云端删除数据
  3. /// </summary>
  4. /// <param name="ak">百度密钥</param>
  5. /// <param name="geotable_id">LBS云geotableID</param>
  6. /// <param name="columnName">字段名称</param>
  7. /// <param name="columnValue">值(为空时则删除所有匹配的数据)</param>
  8. /// <returns></returns>
  9. public string DeleteByName(string ak, string geotable_id, string columnName, string columnValue)
  10. {
  11. string boundary = "---------------------------" + DateTime.Now.Ticks.ToString("x");
  12. //请求
  13. WebRequest req = WebRequest.Create(@"http://api.map.baidu.com/geodata/v2/poi/delete");
  14. req.Method = "POST";
  15. req.ContentType = "multipart/form-data; boundary=" + boundary;
  16. //组织表单数据
  17. StringBuilder sb = new StringBuilder();
  18. sb.Append("--" + boundary);
  19. sb.Append("\r\n");
  20.  
  21. sb.Append("Content-Disposition: form-data; name=\"ak\"");
  22. sb.Append("\r\n\r\n");
  23. sb.Append(ak);
  24. sb.Append("\r\n");
  25. sb.Append("--" + boundary);
  26. sb.Append("\r\n");
  27.  
  28. sb.Append("Content-Disposition: form-data; name=\"geotable_id\"");
  29. sb.Append("\r\n\r\n");
  30. sb.Append(geotable_id);
  31. sb.Append("\r\n");
  32. sb.Append("--" + boundary);
  33. sb.Append("\r\n");
  34.  
  35. sb.Append("Content-Disposition: form-data; name=\"" + columnName + "\"");
  36. sb.Append("\r\n\r\n");
  37. sb.Append(columnValue);
  38. sb.Append("\r\n");
  39. sb.Append("--" + boundary);
  40. sb.Append("\r\n");
  41.  
  42. string head = sb.ToString();
  43. byte[] form_data = Encoding.UTF8.GetBytes(head);
  44. //结尾
  45. byte[] foot_data = Encoding.UTF8.GetBytes("\r\n--" + boundary + "--\r\n");
  46.  
  47. //post总长度
  48. long length = form_data.Length + foot_data.Length;
  49. req.ContentLength = length;
  50. Stream requestStream = req.GetRequestStream();
  51.  
  52. //发送表单参数
  53. requestStream.Write(form_data, , form_data.Length);
  54.  
  55. //结尾
  56. requestStream.Write(foot_data, , foot_data.Length);
  57. requestStream.Close();
  58.  
  59. //响应
  60. WebResponse pos = req.GetResponse();
  61. StreamReader sr = new StreamReader(pos.GetResponseStream(), Encoding.UTF8);
  62. string html = sr.ReadToEnd().Trim();
  63. sr.Close();
  64. if (pos != null)
  65. {
  66. pos.Close();
  67. pos = null;
  68. }
  69. if (req != null)
  70. {
  71. req = null;
  72. }
  73. return html;
  74. }

上传csv格式文件:

  1. /// <summary>
  2. /// 模拟表单提交,实现提交csv格式文件的上传
  3. /// </summary>
  4. /// <param name="ak"></param>
  5. /// <param name="geotable_id"></param>
  6. /// <param name="file"></param>
  7. /// <returns></returns>
  8. public string UploadCSVFile(string ak, string geotable_id, string filePath)
  9. {
  10. string boundary = "---------------------------" + DateTime.Now.Ticks.ToString("x");
  11. //请求
  12. WebRequest req = WebRequest.Create(@"http://api.map.baidu.com/geodata/v2/poi/upload");
  13. req.Method = "POST";
  14. req.ContentType = "multipart/form-data; boundary=" + boundary;
  15. //组织表单数据
  16. StringBuilder sb = new StringBuilder();
  17. sb.Append("--" + boundary);
  18. sb.Append("\r\n");
  19. sb.Append("Content-Disposition: form-data; name=\"ak\"");
  20. sb.Append("\r\n\r\n");
  21. sb.Append(ak);
  22. sb.Append("\r\n");
  23. sb.Append("--" + boundary);
  24. sb.Append("\r\n");
  25. sb.Append("Content-Disposition: form-data; name=\"geotable_id\"");
  26. sb.Append("\r\n\r\n");
  27. sb.Append(geotable_id);
  28. sb.Append("\r\n");
  29. sb.Append("--" + boundary);
  30. sb.Append("\r\n");
  31. sb.Append("Content-Disposition: form-data; name=\"poi_list\"; filename=\"e:\\databox.csv\"");
  32. sb.Append("\r\n");
  33. sb.Append("Content-Type: application/octet-stream");
  34. sb.Append("\r\n\r\n");
  35.  
  36. string head = sb.ToString();
  37. byte[] form_data = Encoding.UTF8.GetBytes(head);
  38. //结尾
  39. byte[] foot_data = Encoding.UTF8.GetBytes("\r\n--" + boundary + "--\r\n");
  40. //文件
  41. FileStream fileStream = new FileStream(filePath, FileMode.Open, FileAccess.Read);
  42. //post总长度
  43. long length = form_data.Length + fileStream.Length + foot_data.Length;
  44. req.ContentLength = length;
  45. Stream requestStream = req.GetRequestStream();
  46.  
  47. //发送表单参数
  48. requestStream.Write(form_data, , form_data.Length);
  49. //文件内容
  50. byte[] buffer = new Byte[checked((uint)Math.Min(, (int)fileStream.Length))];
  51. int bytesRead = ;
  52. while ((bytesRead = fileStream.Read(buffer, , buffer.Length)) != )
  53. requestStream.Write(buffer, , bytesRead);
  54. //结尾
  55. requestStream.Write(foot_data, , foot_data.Length);
  56. requestStream.Close();
  57.  
  58. //响应
  59. WebResponse pos = req.GetResponse();
  60. StreamReader sr = new StreamReader(pos.GetResponseStream(), Encoding.UTF8);
  61. string html = sr.ReadToEnd().Trim();
  62. sr.Close();
  63. if (pos != null)
  64. {
  65. pos.Close();
  66. pos = null;
  67. }
  68. if (req != null)
  69. {
  70. req = null;
  71. }
  72. return html;
  73. }

    调用:

  1. string ak = System.Configuration.ConfigurationManager.AppSettings["ak"].ToString();
  2. string geotableID = System.Configuration.ConfigurationManager.AppSettings["geotableID"].ToString();
  3. DeleteByName(ak, geotableID, "title", ""); //删除所有数据
  4. UploadCSVFile(ak, geotableID, @"E:\databox.csv"); //上传数据

    

LBS云端数据删除和上传的更多相关文章

  1. Ajax上传数据和上传文件(三种方式)

    Ajax向后端发送数据可以有三种方式:原生Ajax方式,jQuery Ajax方式,iframe+form 方式(伪造Ajax方式) <!DOCTYPE html> <html la ...

  2. [实战]MVC5+EF6+MySql企业网盘实战(12)——新建文件夹和上传文件

    写在前面 之前的上传文件的功能,只能上传到根目录,前两篇文章实现了新建文件夹的功能,则这里对上传文件的功能进行适配. 系列文章 [EF]vs15+ef6+mysql code first方式 [实战] ...

  3. web开发实战--图片裁剪和上传

    前言: 最近的开发中, 有一个上传头像的任务. 由于头像本身的特殊性, 其一般流程为选择图片, 编辑裁剪区域, 再继而上传图片操作. 看似简单的东西, 实则是挺麻烦的一件事. 借助这次开发机会, 来具 ...

  4. HTML5网页录音和上传到服务器,支持PC、Android,支持IOS微信

    准备做一个网页版聊天界面,表情啊.图片啊.上传文件啊都应该要有,视频就算了,语音还是要的. 本文记录的是在网页上用GitHub上的Recorder进行在线录音和上传到服务器,前几天升了一下级,以后有时 ...

  5. 浅谈简单实现file控件的图片预览,裁剪和上传。

    1.图片预览之FileReader对象    FileReader 对象允许Web应用程序异步读取存储在用户计算机上的文件(或原始数据缓冲区)的内容,使用File或Blob对象指定要读取的文件或数据 ...

  6. Django项目:CRM(客户关系管理系统)--31--23PerfectCRM实现King_admin数据删除

    登陆密码设置参考 http://www.cnblogs.com/ujq3/p/8553784.html # king_urls.py # ————————02PerfectCRM创建ADMIN页面—— ...

  7. 禁用Windows重复数据删除

    重复数据删除,可以减少磁盘占用,但使用不当也有可能增加IO,另外,也为此功能会将硬盘分块,所以当硬盘占用较高时,进行碎片整理也比较困难,所以有时需要禁用掉重复数据删除功能,并解除重复数据的优化,可以通 ...

  8. Design7:数据删除设计

    在设计一个新系统的Table Schema的时候,不仅需要满足业务逻辑的复杂需求,而且需要考虑如何设计schema才能更快的更新和查询数据,减少维护成本. 模拟一个场景,有如下Table Schema ...

  9. 压缩Sqlite数据文件大小,解决数据删除后占用空间不变的问题

    最近有一网站使用Sqlite数据库作为数据临时性的缓存,对多片区进行划分 Sqlite数据库文件,每天大概新增近1万的数据量,起初效率有明显的提高,但历经一个多月后数据库文件从几K也上升到了近160M ...

随机推荐

  1. 统计某一字段等于不同值的个数的sql语句(分享)

    本文介绍下,用一条sql语句统计某一字段等于不同值的个数,方法很独特,有需要的朋友参考下. 表t,数据:  id      type001     1001     0002     1001     ...

  2. PHP去掉转义后字符串中的反斜杠\函数stripslashes

    addslashes函数主要是在字符串中添加反斜杠对特殊字符进行转义,stripslashes则是去掉转义后字符串中的反斜杠\,比如当你提交一段 json数据到PHP端的时候可能会遇到json字符串中 ...

  3. Spark小课堂Week6 启动日志详解

    Spark小课堂Week6 启动日志详解 作为分布式系统,Spark程序是非常难以使用传统方法来进行调试的,所以我们主要的武器是日志,今天会对启动日志进行一下详解. 日志详解 今天主要遍历下Strea ...

  4. 由底层和逻辑说开去——c++之类与对象的深入剖析

    类是什么,对象是什么,  这两个问题在各个c++书里面都以一种抽象的描述方式,给了我们近乎完美的答案,然后我好像就知道什么是类什么是对象了,但是当扪心自问,类在哪儿,对象在哪儿,成员方法在哪儿,成员变 ...

  5. N皇后摆放问题

    Description 在N*N的方格棋盘放置了N个皇后,使得它们不相互攻击(即任意2个皇后不允许处在同一排,同一列,也不允许处在与棋盘边框成45角的斜线上.  你的任务是,对于给定的N,求出有多少种 ...

  6. 2016年辛星less教程发布了

    首先简介一下less吧,它是一个css预处理器.当我们的项目比较大的时候,我们的css的代码量也会急剧的膨胀,因此就有很多方案来让编程更加容易,没错,less就是这样一种技术. 在百度网盘的下载地址为 ...

  7. 解决ora-01652无法通过128(在表空间temp中)扩展temp段

    问题描述: 今天建索引的时候报:ora-01652无法通过128(在表空间temp中)扩展temp段 1.查看表空间是自动增长,且建表空间时是没有设表空间最大值的. 2.查看了一下表空间剩余多少竟然只 ...

  8. 获取网页上数据(图片、文字、视频)-b

    Demo地址:http://download.csdn.net/detail/u012881779/8831835 获取网页上所有图片.获取所有html.获取网页title.获取网页内容文字... . ...

  9. 跨过slf4j和logback,直接晋级log4j 2

    今年一直关注log4j 2,但至今还没有出正式版.等不及了,今天正式向大家介绍一下log4j的升级框架,log4j 2. log4j,相信大家都熟悉,至今对java影响最大的logging系统,至今仍 ...

  10. js获取节点

    demo1: <!-- <div id="test" v="1">你好</div> --> // console.log(t ...