通过HtppWebRequest发送图片到服务器并保存
之前写的楼主没有测试,后来发现用起来有点小问题 就修改了一下,现在已经亲测可用 完全没有问题了 下面就开始贴代码了
首先将图片装换成功byte 数组
这个path是图片的路径 例如d:12.png;
public byte[] SaveImage(string path)
{
FileStream fs=new FileStream(path,FileMode.Open,FileAccess.Read);
BinaryReader br=new BinaryReader(fs);
byte[] imgBytes = br.ReadBytes((int) fs.Length);
return imgBytes;
}
然后上传图片流
这里要注意点 写入请求流的strean 用完要关闭
/// <summary>
/// 上传图片流
/// </summary>
/// <param name="data"></param>
private bool ImageRequest(byte[] data)
{
const string host = "http://www.baidu.com";
const string path = "/ImageManagerApi/GetImageByte";
string url = host + path;
HttpWebResponse httpResponse = null;
HttpWebRequest httpRequest = (HttpWebRequest)WebRequest.Create(url);
httpRequest.Method = "POST";
httpRequest.Headers.Add("FileSize", data.Length.ToString());
using (Stream stream = httpRequest.GetRequestStream())
{
stream.Write(data, , data.Length);
stream.Close();
}
try
{
httpResponse = (HttpWebResponse)httpRequest.GetResponse();
}
catch (WebException ex)
{ httpResponse = (HttpWebResponse)ex.Response;
}
//响应流
Stream st = httpResponse.GetResponseStream();
StreamReader reader = new StreamReader(st, Encoding.GetEncoding("utf-8"));
string result = reader.ReadToEnd();
if ("ok".Contains(result))
return true;
return false;
}
服务器接收的方法
/// <summary>
/// 获取图片流
/// 保存图片
/// </summary>
public void GetImageByte()
{
try
{
int fileSize = int.Parse(Request.Headers["FileSize"].ToString());
byte[] data = Request.BinaryRead(fileSize);
DebugHelper.Info(BitConverter.ToString(data));
var path = "/Upload/LINGDAO/" + DateTime.Now.Date.ToString("yyyy-MM-dd") + "/";
var serverPath = Server.MapPath("~" + path);
if (!Directory.Exists(serverPath))
{
Directory.CreateDirectory(serverPath);
}
string fileName = Guid.NewGuid().ToString();
//图片存储到流中 MemoryStream ms = new MemoryStream(data);
Image image = Image.FromStream(ms);
image.Save(serverPath + fileName + ".png"); Response.HeaderEncoding = Encoding.UTF8;
Response.Charset = "utf-8";
Response.Write("ok");
}
catch (Exception e)
{
DebugHelper.Info(e.Message);
Response.HeaderEncoding = Encoding.UTF8;
Response.Charset = "utf-8";
Response.Write("error");
}
}
好了 大功告成!
通过HtppWebRequest发送图片到服务器并保存的更多相关文章
- python使用post请求发送图片并接受图片
图像读取编码与反编码: import requests import json import numpy as np import cv2 import base64 # 首先将图片读入 # 由于要发 ...
- [android]-如何在向服务器发送request时附加已保存的cookie数据
[android]-如何在向服务器发送request时附加已保存的cookie数据 应用场景:在开发android基于手机端+服务器端的应用时,登陆->获取用户信息->获取授权用户相关业务 ...
- [Asp.net 开发系列之SignalR篇]专题四:使用SignalR实现发送图片
一.引言 在前一篇博文已经介绍了如何使用SignalR来实现聊天室的功能,在这篇文章中,将实现如何使用SignalR来实现发送图片的功能. 二.实现发送图片的思路 我还是按照之前的方式来讲述这篇文章, ...
- 【小梅哥FPGA进阶教程】串口发送图片数据到SRAM在TFT屏上显示
十五.串口发送图片数据到SRAM在TFT屏上显示 之前分享过rom存储图片数据在TFT屏上显示,该方法只能显示小点的图片,如果想显示TFT屏幕大小的图片上述方法rom内存大小不够.小梅哥给了个方案,利 ...
- 【代码笔记】Java深入学习——实现客户端发送文件到服务器的文件传输
Server.java package com.huaxin.lesson02; import java.io.FileOutputStream; import java.io.InputStream ...
- php获取远程图片并把它保存到本地
/* *功能:php多种方式完美实现下载远程图片保存到本地 *参数:文件url,保存文件名称,使用的下载方式 *当保存文件名称为空时则使用远程文件原来的名称 */ function getImage( ...
- IM聊天教程:发送图片/视频/语音/表情
经常有朋友问起,如何在IM即时通讯中实现发送图片.视频.语音和表情? 为此,小编特意写了一个vue版本的Demo,实现了图片视频文件和表情的的发送,参考这个Demo源代码,相信你就可以轻松的用Unia ...
- 非域环境下搭建自动故障转移镜像无法将 ALTER DATABASE 命令发送到远程服务器实例的解决办法
非域环境下搭建自动故障转移镜像无法将 ALTER DATABASE 命令发送到远程服务器实例的解决办法 环境:非域环境 因为是自动故障转移,需要加入见证,事务安全模式是,强安全FULL模式 做到最后一 ...
- Unity3D图片的下载及保存
Unity3D图片的下载及保存 分类: Unity3D 2013-06-24 15:03 3609人阅读 评论(2) 收藏 举报 Unity3D图片URL 代码如下: [csharp] view pl ...
随机推荐
- Java NIO学习笔记七 Non-blocking Server
Java NIO:Non-blocking Server 即使你了解了Java NIO非阻塞功能的工作(怎么样Selector,Channel, Buffer等等),设计一个无阻塞服务器仍然很难.非阻 ...
- hibernate sql查询转换成VO返回list
hibernate sql查询转换成VO @Override public List<FenxiVo> getTuanDuiFenxiList(FenxiVo FenxiVo,Intege ...
- 打造一个简单的Java字节码反编译器
简介 本文示范了一种反编译Java字节码的方法,首先通过解析class文件,然后将解析的结果转成java代码.但是本文并没有覆盖所有的class文件的特性和指令,只针对部分规范进行解析. 所有的代码代 ...
- Linux下配置tomcat+apr+native应对高并发
摘要:在慢速网络上Tomcat线程数开到300以上的水平,不配APR,基本上300个线程狠快就会用满,以后的请求就只好等待.但是配上APR之后,Tomcat将以JNI的形式调用Apache HTTP服 ...
- ajax数据请求4(xml格式)
ajax数据请求4(xml格式): <!doctype html> <html> <head> <meta charset="utf-8" ...
- Linux编程之epoll
现在有这么一个场景:我是一个很忙的大老板,我有100个手机,手机来信息了,我的秘书就会告诉我"老板,你的手机来信息了."我很生气,我的秘书就是这样子,每次手机来信息就只告诉我来信息 ...
- iOS多线程开发之离不开的GCD(上篇)
一.GCD基本概念 GCD 全称Grand Central Dispatch(大中枢队列调度),是一套低层API,提供了⼀种新的方法来进⾏并发程序编写.从基本功能上讲,GCD有点像NSOperatio ...
- 第二章(jQuery选择器)
2.1jQuery选择器是什么 1.CSS选择器 选择器 示例 选择器 示例 标签选择器 a{ } p{ } ul{ } ID选择器 #ID{ } 类选择器 .class{ } 群组选择器 td,p, ...
- RabbitMQ安装|使用|概念|Golang开发
搬砖的陈大师版权所有,转载请注明:http://www.lenggirl.com/tool/RabbitMQ.html 手册:http://www.rabbitmq.com/getstarted.ht ...
- Java学习笔记之字符串常用方法
一.String关键字一些常用方法 1.构造方法: public String(); 空构造 public String(byte[] bytes);将字节数组转成字符串 public String ...