LBS云端数据删除和上传
这里采用C#模拟表单提交,实现LBS云端删除和csv格式文件的上传。
删除:
- /// <summary>
- /// 从LBS云端删除数据
- /// </summary>
- /// <param name="ak">百度密钥</param>
- /// <param name="geotable_id">LBS云geotableID</param>
- /// <param name="columnName">字段名称</param>
- /// <param name="columnValue">值(为空时则删除所有匹配的数据)</param>
- /// <returns></returns>
- public string DeleteByName(string ak, string geotable_id, string columnName, string columnValue)
- {
- string boundary = "---------------------------" + DateTime.Now.Ticks.ToString("x");
- //请求
- WebRequest req = WebRequest.Create(@"http://api.map.baidu.com/geodata/v2/poi/delete");
- req.Method = "POST";
- req.ContentType = "multipart/form-data; boundary=" + boundary;
- //组织表单数据
- StringBuilder sb = new StringBuilder();
- sb.Append("--" + boundary);
- sb.Append("\r\n");
- sb.Append("Content-Disposition: form-data; name=\"ak\"");
- sb.Append("\r\n\r\n");
- sb.Append(ak);
- sb.Append("\r\n");
- sb.Append("--" + boundary);
- sb.Append("\r\n");
- sb.Append("Content-Disposition: form-data; name=\"geotable_id\"");
- sb.Append("\r\n\r\n");
- sb.Append(geotable_id);
- sb.Append("\r\n");
- sb.Append("--" + boundary);
- sb.Append("\r\n");
- sb.Append("Content-Disposition: form-data; name=\"" + columnName + "\"");
- sb.Append("\r\n\r\n");
- sb.Append(columnValue);
- sb.Append("\r\n");
- sb.Append("--" + boundary);
- sb.Append("\r\n");
- string head = sb.ToString();
- byte[] form_data = Encoding.UTF8.GetBytes(head);
- //结尾
- byte[] foot_data = Encoding.UTF8.GetBytes("\r\n--" + boundary + "--\r\n");
- //post总长度
- long length = form_data.Length + foot_data.Length;
- req.ContentLength = length;
- Stream requestStream = req.GetRequestStream();
- //发送表单参数
- requestStream.Write(form_data, , form_data.Length);
- //结尾
- requestStream.Write(foot_data, , foot_data.Length);
- requestStream.Close();
- //响应
- WebResponse pos = req.GetResponse();
- StreamReader sr = new StreamReader(pos.GetResponseStream(), Encoding.UTF8);
- string html = sr.ReadToEnd().Trim();
- sr.Close();
- if (pos != null)
- {
- pos.Close();
- pos = null;
- }
- if (req != null)
- {
- req = null;
- }
- return html;
- }
上传csv格式文件:
- /// <summary>
- /// 模拟表单提交,实现提交csv格式文件的上传
- /// </summary>
- /// <param name="ak"></param>
- /// <param name="geotable_id"></param>
- /// <param name="file"></param>
- /// <returns></returns>
- public string UploadCSVFile(string ak, string geotable_id, string filePath)
- {
- string boundary = "---------------------------" + DateTime.Now.Ticks.ToString("x");
- //请求
- WebRequest req = WebRequest.Create(@"http://api.map.baidu.com/geodata/v2/poi/upload");
- req.Method = "POST";
- req.ContentType = "multipart/form-data; boundary=" + boundary;
- //组织表单数据
- StringBuilder sb = new StringBuilder();
- sb.Append("--" + boundary);
- sb.Append("\r\n");
- sb.Append("Content-Disposition: form-data; name=\"ak\"");
- sb.Append("\r\n\r\n");
- sb.Append(ak);
- sb.Append("\r\n");
- sb.Append("--" + boundary);
- sb.Append("\r\n");
- sb.Append("Content-Disposition: form-data; name=\"geotable_id\"");
- sb.Append("\r\n\r\n");
- sb.Append(geotable_id);
- sb.Append("\r\n");
- sb.Append("--" + boundary);
- sb.Append("\r\n");
- sb.Append("Content-Disposition: form-data; name=\"poi_list\"; filename=\"e:\\databox.csv\"");
- sb.Append("\r\n");
- sb.Append("Content-Type: application/octet-stream");
- sb.Append("\r\n\r\n");
- string head = sb.ToString();
- byte[] form_data = Encoding.UTF8.GetBytes(head);
- //结尾
- byte[] foot_data = Encoding.UTF8.GetBytes("\r\n--" + boundary + "--\r\n");
- //文件
- FileStream fileStream = new FileStream(filePath, FileMode.Open, FileAccess.Read);
- //post总长度
- long length = form_data.Length + fileStream.Length + foot_data.Length;
- req.ContentLength = length;
- Stream requestStream = req.GetRequestStream();
- //发送表单参数
- requestStream.Write(form_data, , form_data.Length);
- //文件内容
- byte[] buffer = new Byte[checked((uint)Math.Min(, (int)fileStream.Length))];
- int bytesRead = ;
- while ((bytesRead = fileStream.Read(buffer, , buffer.Length)) != )
- requestStream.Write(buffer, , bytesRead);
- //结尾
- requestStream.Write(foot_data, , foot_data.Length);
- requestStream.Close();
- //响应
- WebResponse pos = req.GetResponse();
- StreamReader sr = new StreamReader(pos.GetResponseStream(), Encoding.UTF8);
- string html = sr.ReadToEnd().Trim();
- sr.Close();
- if (pos != null)
- {
- pos.Close();
- pos = null;
- }
- if (req != null)
- {
- req = null;
- }
- return html;
- }
调用:
- string ak = System.Configuration.ConfigurationManager.AppSettings["ak"].ToString();
- string geotableID = System.Configuration.ConfigurationManager.AppSettings["geotableID"].ToString();
- DeleteByName(ak, geotableID, "title", ""); //删除所有数据
- UploadCSVFile(ak, geotableID, @"E:\databox.csv"); //上传数据
LBS云端数据删除和上传的更多相关文章
- Ajax上传数据和上传文件(三种方式)
Ajax向后端发送数据可以有三种方式:原生Ajax方式,jQuery Ajax方式,iframe+form 方式(伪造Ajax方式) <!DOCTYPE html> <html la ...
- [实战]MVC5+EF6+MySql企业网盘实战(12)——新建文件夹和上传文件
写在前面 之前的上传文件的功能,只能上传到根目录,前两篇文章实现了新建文件夹的功能,则这里对上传文件的功能进行适配. 系列文章 [EF]vs15+ef6+mysql code first方式 [实战] ...
- web开发实战--图片裁剪和上传
前言: 最近的开发中, 有一个上传头像的任务. 由于头像本身的特殊性, 其一般流程为选择图片, 编辑裁剪区域, 再继而上传图片操作. 看似简单的东西, 实则是挺麻烦的一件事. 借助这次开发机会, 来具 ...
- HTML5网页录音和上传到服务器,支持PC、Android,支持IOS微信
准备做一个网页版聊天界面,表情啊.图片啊.上传文件啊都应该要有,视频就算了,语音还是要的. 本文记录的是在网页上用GitHub上的Recorder进行在线录音和上传到服务器,前几天升了一下级,以后有时 ...
- 浅谈简单实现file控件的图片预览,裁剪和上传。
1.图片预览之FileReader对象 FileReader 对象允许Web应用程序异步读取存储在用户计算机上的文件(或原始数据缓冲区)的内容,使用File或Blob对象指定要读取的文件或数据 ...
- Django项目:CRM(客户关系管理系统)--31--23PerfectCRM实现King_admin数据删除
登陆密码设置参考 http://www.cnblogs.com/ujq3/p/8553784.html # king_urls.py # ————————02PerfectCRM创建ADMIN页面—— ...
- 禁用Windows重复数据删除
重复数据删除,可以减少磁盘占用,但使用不当也有可能增加IO,另外,也为此功能会将硬盘分块,所以当硬盘占用较高时,进行碎片整理也比较困难,所以有时需要禁用掉重复数据删除功能,并解除重复数据的优化,可以通 ...
- Design7:数据删除设计
在设计一个新系统的Table Schema的时候,不仅需要满足业务逻辑的复杂需求,而且需要考虑如何设计schema才能更快的更新和查询数据,减少维护成本. 模拟一个场景,有如下Table Schema ...
- 压缩Sqlite数据文件大小,解决数据删除后占用空间不变的问题
最近有一网站使用Sqlite数据库作为数据临时性的缓存,对多片区进行划分 Sqlite数据库文件,每天大概新增近1万的数据量,起初效率有明显的提高,但历经一个多月后数据库文件从几K也上升到了近160M ...
随机推荐
- 统计某一字段等于不同值的个数的sql语句(分享)
本文介绍下,用一条sql语句统计某一字段等于不同值的个数,方法很独特,有需要的朋友参考下. 表t,数据: id type001 1001 0002 1001 ...
- PHP去掉转义后字符串中的反斜杠\函数stripslashes
addslashes函数主要是在字符串中添加反斜杠对特殊字符进行转义,stripslashes则是去掉转义后字符串中的反斜杠\,比如当你提交一段 json数据到PHP端的时候可能会遇到json字符串中 ...
- Spark小课堂Week6 启动日志详解
Spark小课堂Week6 启动日志详解 作为分布式系统,Spark程序是非常难以使用传统方法来进行调试的,所以我们主要的武器是日志,今天会对启动日志进行一下详解. 日志详解 今天主要遍历下Strea ...
- 由底层和逻辑说开去——c++之类与对象的深入剖析
类是什么,对象是什么, 这两个问题在各个c++书里面都以一种抽象的描述方式,给了我们近乎完美的答案,然后我好像就知道什么是类什么是对象了,但是当扪心自问,类在哪儿,对象在哪儿,成员方法在哪儿,成员变 ...
- N皇后摆放问题
Description 在N*N的方格棋盘放置了N个皇后,使得它们不相互攻击(即任意2个皇后不允许处在同一排,同一列,也不允许处在与棋盘边框成45角的斜线上. 你的任务是,对于给定的N,求出有多少种 ...
- 2016年辛星less教程发布了
首先简介一下less吧,它是一个css预处理器.当我们的项目比较大的时候,我们的css的代码量也会急剧的膨胀,因此就有很多方案来让编程更加容易,没错,less就是这样一种技术. 在百度网盘的下载地址为 ...
- 解决ora-01652无法通过128(在表空间temp中)扩展temp段
问题描述: 今天建索引的时候报:ora-01652无法通过128(在表空间temp中)扩展temp段 1.查看表空间是自动增长,且建表空间时是没有设表空间最大值的. 2.查看了一下表空间剩余多少竟然只 ...
- 获取网页上数据(图片、文字、视频)-b
Demo地址:http://download.csdn.net/detail/u012881779/8831835 获取网页上所有图片.获取所有html.获取网页title.获取网页内容文字... . ...
- 跨过slf4j和logback,直接晋级log4j 2
今年一直关注log4j 2,但至今还没有出正式版.等不及了,今天正式向大家介绍一下log4j的升级框架,log4j 2. log4j,相信大家都熟悉,至今对java影响最大的logging系统,至今仍 ...
- js获取节点
demo1: <!-- <div id="test" v="1">你好</div> --> // console.log(t ...