AG BBIN MG PT PHPbbin ag接口平台建设文件 C#bbin ag接口平台建设文件 ASPbbin ag接口平台建设文件

#region 选择图片&
/// &summary&
/// 打开照相机
/// &/summary&
public void OpenCamera()
CameraCaptureTask cameraCapture = new CameraCaptureTask();
pleted += photoChooser_C
cameraCapture.Show();
/// &summary&
/// 选择图片
/// &/summary&
public void ChooseImage()
PhotoChooserTask photoChooser = new PhotoChooserTask();
pleted += photoChooser_C
photoChooser.Show();
void photoChooser_Completed(object sender, PhotoResult e)
if (e.TaskResult == TaskResult.OK)
Upload(e.ChosenPhoto);
//BitmapImage bitmap = new BitmapImage();
//bitmap.SetSource(e.ChosenPhoto);
//Image img = new Image();
//img.Source =&
//if (e.ChosenPhoto != null)
Stream s = pression(e.ChosenPhoto);
bytepic = StreamToBytes(s);
Encoding myEncoding = Encoding.GetEncoding("utf-8");
strpic = Convert.ToBase64String(bytepic);
ExistsPic =
#endregion&
/// &summary&
/// &/summary&
/// &param name="argStream"&&/param&
void Upload(Stream argStream)
if (!DeviceNetworkInformation.IsNetworkAvailable)
MessageBox.Show("请开启网络连接..");
if (!DeviceNetworkInformation.IsCellularDataEnabled && !DeviceNetworkInformation.IsWiFiEnabled)
MessageBox.Show("请开启网络连接...");
byte[] bytes = new byte[argStream.Length];&
argStream.Seek(0, SeekOrigin.Begin);&
while (argStream.Read(bytes, 0, bytes.Length) & 0) ;&
string fileName = Constant.Mac + ".png";//此处指定了上传文件名 ,Constant.Mac是自己定义的常量&&
Dictionary&string, object& postParameters = new Dictionary&string, object&();
string contentType = "multipart/form-data";//"image/jpeg";//"multipart/form-data";//"application/octetstream";//"image/jpeg";//"multipart/form-data";
FileParameter param = new FileParameter(bytes, fileName, contentType);
postParameters.Add(fileName, param);&
HttpMultipartFormRequest req = new HttpMultipartFormRequest();
req.AsyncHttpRequest(Constant.URL_IMG_UploadPortrait, postParameters, null); //自己定义的常量 Post上传到的网址
//Sys.ProgressBarBase.Show(true);
#region 其他方法(未使用)&&
/// &summary&
/// 字节流转换byte
/// &/summary&
/// &param name="stream"&&/param&
/// &returns&&/returns&
byte[] StreamToBytes(Stream stream)
byte[] bytes = new byte[stream.Length];
stream.Read(bytes, 0, bytes.Length);
// 设置当前流的位置为流的开始
stream.Seek(0, SeekOrigin.Begin);
/// &summary&
/// 压缩图片,只调整质量,不调整分辨率
/// &/summary&
/// &param name="soucre"&图片流&/param&
/// &param name="quality"&质量1-100&/param&
Stream Compression(Stream soucre, int quality)
//var quality = 80;
soucre.Seek(0, SeekOrigin.Begin);
var p = quality / 100.0;
var writeableBitmap = PictureDecoder.DecodeJpeg(soucre);
var width = writeableBitmap.PixelWidth *
var height = writeableBitmap.PixelHeight *
var outstream = new MemoryStream();
writeableBitmap.SaveJpeg(outstream, (int)width, (int)height, 0, quality);
outstream.Seek(0, SeekOrigin.Begin);
/// &summary&
/// 根据文件扩展名获取文件类型
/// &/summary&
/// &param name="fileName"&文件名&/param&
/// &returns&&/returns&
string GetContentType(string fileName)
var fileExt = System.IO.Path.GetExtension(fileName);
return GetCommonFileContentType(fileExt);
/// &summary&
/// 获取通用文件的文件类型
/// &/summary&
/// &param name="fileExt"&文件扩展名.如".jpg",".gif"等&/param&
/// &returns&&/returns&
string GetCommonFileContentType(string fileExt)
switch (fileExt)
case ".jpg":
case ".jpeg":
return "image/jpeg";
case ".gif":
return "image/gif";
case ".bmp":
return "image/bmp";
case ".png":
return "image/png";
return "application/octetstream";
#endregion }
以下2个类是实际上传文件处理类:
/// &summary&
/// 文件类型数据的内容参数
/// &/summary&
public class FileParameter
// 文件内容
public byte[] File { }
public string FileName { }
// 文件内容类型
public string ContentType { }&
public FileParameter(byte[] file) : this(file, null) { }&
public FileParameter(byte[] file, string filename) : this(file, filename, null) { }&
public FileParameter(byte[] file, string filename, string contentType)
FileName =
ContentType = contentT
/// &summary&
/// 文件上传类(数据与文件http请求)
/// &/summary&
public class HttpMultipartFormRequest
#region Data Members&
private readonly Encoding DefaultEncoding = Encoding.UTF8;
private ResponseCallback m_C
private byte[] m_FormD&
#endregion&
#region Constructor&
public HttpMultipartFormRequest()
#endregion&
#region Delegate&
public delegate void ResponseCallback(string msg);&
#endregion&
/// &summary&
/// 传单个文件(暂不用)
/// &/summary&
/// &param name="postUri"&&/param&
/// &param name="argbytes"&&/param&
/// &param name="callback"&&/param&
public void AsyncHttpRequest(string postUri, byte[] argbytes, ResponseCallback callback = null)
// 随机序列,用作防止服务器无法识别数据的起始位置
string formDataBoundary = String.Format("----------{0:N}", Guid.NewGuid());
// 设置contentType
string contentType = "multipart/form- boundary=" + formDataB
// 将数据转换为byte[]格式
m_FormData =//GetMultipartFormData(postParameters, formDataBoundary);
// 回调函数
m_Callback =&
// 创建http对象
HttpWebRequest request = HttpWebRequest.CreateHttp(new Uri(postUri));
// 设为post请求
request.Method = "POST";
request.ContentType = contentT
// 请求写入数据流
request.BeginGetRequestStream(GetRequestStreamCallback, request);
/// &summary&
/// 传多个文件
/// &/summary&
/// &param name="postUri"&请求的URL&/param&
/// &param name="postParameters"&[filename,FileParameter]&/param&
/// &param name="callback"&回掉函数&/param&
public void AsyncHttpRequest(string postUri, Dictionary&string, object& postParameters, ResponseCallback callback)
// 随机序列,用作防止服务器无法识别数据的起始位置
string formDataBoundary = String.Format("----------{0:N}", Guid.NewGuid());
// 设置contentType
string contentType = "multipart/form- boundary=" + formDataB
// 将数据转换为byte[]格式
m_FormData = GetMultipartFormData(postParameters, formDataBoundary);
// 回调函数
m_Callback =&
// 创建http对象
HttpWebRequest request = HttpWebRequest.CreateHttp(new Uri(postUri));
// 设为post请求
request.Method = "POST";
request.ContentType = contentT
// 请求写入数据流
request.BeginGetRequestStream(GetRequestStreamCallback, request);
private void GetRequestStreamCallback(IAsyncResult ar)
HttpWebRequest request = ar.AsyncState as HttpWebR
using (var postStream = request.EndGetRequestStream(ar))
postStream.Write(m_FormData, 0, m_FormData.Length);
postStream.Close();
request.BeginGetResponse(GetResponseCallback, request);
private void GetResponseCallback(IAsyncResult ar)
// 处理Post请求返回的消息
HttpWebRequest request = ar.AsyncState as HttpWebR
HttpWebResponse response = request.EndGetResponse(ar) as HttpWebR&
using (StreamReader reader = new StreamReader(response.GetResponseStream(), DBCSEncoding.GetDBCSEncoding("gb2312")))
string msg = reader.ReadToEnd();&
if (m_Callback != null)
m_Callback(msg);
catch (Exception e)
string a = e.ToString();
if (m_Callback != null)
m_Callback(string.Empty);
private byte[] GetMultipartFormData(Dictionary&string, object& postParameters, string boundary)
Stream formDataStream = new MemoryStream();
bool needsCLRF = false;&
foreach (var param in postParameters)
if (needsCLRF)
formDataStream.Write(DefaultEncoding.GetBytes("\r\n"), 0, DefaultEncoding.GetByteCount("\r\n"));
needsCLRF = true;&
if (param.Value is FileParameter)
FileParameter fileToUpload = (FileParameter)param.V&
string header = string.Format("--{0}\r\nContent-Disposition: form- name=\"{1}\"; filename=\"{2}\";\r\nContent-Type: {3}\r\n\r\n",
"img", // param.Key, //此处如果是请求的php,则需要约定好 存取一致 php:$_FILES['img']['name']
fileToUpload.FileName ?? param.Key,
fileToUpload.ContentType ?? "application/octet-stream");&
// 将与文件相关的header数据写到stream中
formDataStream.Write(DefaultEncoding.GetBytes(header), 0, DefaultEncoding.GetByteCount(header));
// 将文件数据直接写到stream中
formDataStream.Write(fileToUpload.File, 0, fileToUpload.File.Length);
string postData = string.Format("--{0}\r\nContent-Disposition: form- name=\"{1}\"\r\n\r\n{2}",
param.Key,
param.Value);
formDataStream.Write(DefaultEncoding.GetBytes(postData), 0, DefaultEncoding.GetByteCount(postData));
string tailEnd = "\r\n--" + boundary + "--\r\n";
formDataStream.Write(DefaultEncoding.GetBytes(tailEnd), 0, DefaultEncoding.GetByteCount(tailEnd));&
// 将Stream数据转换为byte[]格式
formDataStream.Position = 0;
byte[] formData = new byte[formDataStream.Length];
formDataStream.Read(formData, 0, formData.Length);
formDataStream.Close();&
return formD
--------------------------------------------------------------------------------------------
--------------------------------------------------------------------------------------------
--------------------------------------------------------------------------------------------
其他参考资料:
直接运行html,选择上传文件后,点提交,即可上传;
注意:name=“file” id=“file” 要与php服务端的 名字一致;
&html&&body&&&form action="upload_file.php" method="post" enctype="multipart/form-data"&&label for="file"&Filename:&/label&&input type="file" name="file" id="file" /& &br /&&input type="submit" name="submit" value="Submit" /&&/form&&&/body&&/html&
其他参考代码:
关键词: C#上传文件到php
--------------------------------------------------------------------------------------------
--------------------------------------------------------------------------------------------
--------------------------------------------------------------------------------------------别人用C#或者php(应该会是C#)进行数据库查询,我这是个 java Project工程,我JAVA这个调用他们的接口返回查询的数据,大侠们推荐下用什么接口比较好(然后介绍下你说的这些接口的时候在什么情况下使用,他们的优缺点)
比如(webservice可以无视防火墙,和平台无关。 但是,慢,传输的数据量小)这是我对webservice的认识 要是说错了还请各位大侠指点
该问题被发起重新开启投票
投票剩余时间:
之前被关闭原因:
该问题被发起删除投票
投票剩余时间:
距离悬赏到期还有:
参与关闭投票者:
关闭原因:
该问题已经被锁定
锁定原因:()
保护原因:避免来自新用户不合宜或无意义的致谢、跟帖答案。
该问题已成功删除,仅对您可见,其他人不能够查看。
兼顾你的各种要求,建议用http做网络协议,用protobuf做数据打包方式
使用Http,容易部署,也可以穿透防火墙,兼容性好用protobuf,看中的是:1. 语言间兼容性好;2. 在序列化反序列化的速度以及包大小之前,取得很好的平衡;3. Google出品值得信赖,而且社区支持好,遇到问题容易找到解决方法
德问是一个专业的编程问答社区,请
后再提交答案
关注该问题的人
共被浏览 (1405) 次&&讲解:  一:取得& token    要取得 token 有两个 参数是 是必须&      req_data& 和 signreq_data格式如下(这是一些必填的。如果想要更多的参数自己去下载手册):        &direct_trade_create_req& &notify_url&{通知地址}&/notify_url& &call_back_url&{返回地址}&/call_back_url& &seller_account_name&{商家支付宝账号}&/seller_account_name& &out_trade_no&{外部订单号}&/out_trade_no& &subject&{商品介绍}&/subject& &total_fee&{商品价格}&/total_fee&&/direct_trade_create_req&&sign(签名)格式如下
$params = array(
/* 基本信息 */
=& {支付宝pid},
md5({网站订单号}),
'alipay.wap.trade.create.direct',
"_input_charset"
=& CHARSET
"req_data"
{以面的req_data}
if($sort){
/* 排序 */
ksort($params);
reset($params);
foreach ($params AS $key =& $value)
.= "{$key}={$value}&";
md5(substr($sign, 0, -1) . {支付宝key});&sign 要注意的地方 是 排序 md5之前一定要按手册上的排序不然会出错的然后以post方式提交给/service/rest.htm?注意 返回的 数据是 经过 urlencode 的 所心我们要用 urldecode 解码 然后还得用解析 返回的数据/**
* 解析远程模拟提交后返回的信息
* @param $str_text 要解析的字符串
* @return 解析结果
*/ function parseResponse($str_text) {
//以&&&字符切割字符串
$para_split = explode('&',$str_text);
//把切割后的字符串数组变成变量与数值组合的数组
foreach ($para_split as $item) {
//获得第一个=字符的位置
$nPos = strpos($item,'=');
//获得字符串长度
$nLen = strlen($item);
//获得变量名
$key = substr($item,0,$nPos);
//获得数值
$value = substr($item,$nPos+1,$nLen-$nPos-1);
//放入数组中
$para_text[$key] = $
if( ! empty ($para_text['res_data'])) {
//token从res_data中解析出来(也就是说res_data中已经包含token的内容)
$doc = new DOMDocument();
$doc-&loadXML($para_text['res_data']);
$para_text['request_token'] = $doc-&getElementsByTagName( "request_token" )-&item(0)-&nodeV
return $para_ }& 最后的 规范的支付表单数据 就是(这里是要用get)$params = array(
=& $this-&_config['wap_alipay_partner'],
md5({网站订单号}),
'alipay.wap.trade.create.direct',
"_input_charset"
=& CHARSET
'req_data'=&'&auth_and_execute_req&&request_token&' . {token} . '&/request_token&&/auth_and_execute_req&',
'service' =& "alipay.wap.auth.authAndExecute",
); //这个地方也要签名的。方式和上面一样 $params['sign'] = _get_sign($params);
//get数据 $return = array(
{支付说明},
'/service/rest.htm?',
$params, )最后 跳转到支付宝& &form action="&?php echo $return['gateway'];?&" id="payform" method="&?php echo $return['method'];?&" style="display:none"&&?php foreach ( $return['params'] $_k=&$value){?& &input type="hidden" name="&?php echo $_k;&" value="&?php echo $&" /&&?php }?&&/form&&script type="text/javascript"&
document.getElementById('payform').submit();&/script&& 明天上返回的那个&        }

我要回帖

更多关于 ag亚游接口 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信