一、创建Web服务端
default.aspx
using GenesisWinForm.Drawing.NormalMap;
using System;
using System.Collections.Generic;
using System.Drawing;
using System.IO;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
string base64 = Request.Form["base64"];
if(base64!=null&&base64!="")
base64 = base64.Replace(" ", "+");
string itemName = Request.Form["itemName"];
string itemPrice = Request.Form["itemPrice"];
string paraType = Request.Form["paraType"];
string para = Request.Form["para"];
string companyTel = Request.Form["companyTel"];
string companyName = Request.Form["companyName"];
writeFile("itemName=" + itemName + "itemPrice=" + itemPrice + "paraType=" + paraType + "para=" + para + "companyTel=" + companyTel + "companyName=" + companyName);
Response.Write(saveFile(base64, itemName, itemPrice, paraType, para, companyTel, companyName));
}
public void writeFile(string temp)
{
if (!File.Exists(System.Web.HttpContext.Current.Server.MapPath("/") + "\\log.txt")) File.Create(System.Web.HttpContext.Current.Server.MapPath(" / ") + "\\log.txt").Close();
FileStream fs = new FileStream(System.Web.HttpContext.Current.Server.MapPath("/") + "\\log.txt", FileMode.Append,FileAccess.Write);
//获得字节数组
byte[] data = System.Text.Encoding.Default.GetBytes(temp);
//开始写入
fs.Write(data, 0, data.Length);
//清空缓冲区、关闭流
fs.Flush();
fs.Close();
}
/// <summary>
/// 保存图片
/// </summary>
/// <param name="base64"></param>
/// <param name="path"></param>
/// <param name="name"></param>
/// <returns></returns>
public bool Base64ToImg(string base64, string path, string name)
{
writeFile("开始写png图!" + path + "------------------------------------------------------------------------------------------------------------------\n");
try
{
byte[] bytes = Convert.FromBase64String(base64);
MemoryStream ms = new MemoryStream(bytes);
System.Drawing.Image img = System.Drawing.Image.FromStream(ms);
if (!Directory.Exists(path))
{
Directory.CreateDirectory(path);
}
img.Save(path + "\\" + name, System.Drawing.Imaging.ImageFormat.Png);
img.Dispose();
return true;
}
catch (Exception ex)
{
writeFile("ex!" + ex + "------------------------------------------------------------------------------------------------------------------\n");
return false;
}
}
/// <summary>
/// 上传材料0
/// </summary>
/// <param name="base64"></param>
/// <returns></returns>
public string saveFile(string base64, string itemName, string itemPrice, string paraType, string para, string companyTel, string companyName)
{
try
{
writeFile("判断文件!" + "\n");
string result = "";
if (base64 != null)
{
writeFile("判断base64!" + "\n");
string[] temp1 = base64.Split(',');
string[] temp2 = itemName.Split(',');
for (int i = 0; i < temp1.Length; i++)
{
//string FilePath = "\\sharing\\itemPic";
string FileName = System.Guid.NewGuid() + "";
writeFile("生成FileName!----------------------------------------------------------------------------------------" + FileName + "\n");
string FilePath = System.Web.HttpContext.Current.Server.MapPath("/") + "\\sharing\\itemPic";
writeFile("生成FilePath!----------------------------------------------------------------------------------------" + FilePath + "\n");
if (!System.IO.Directory.Exists(FilePath))
{
System.IO.Directory.CreateDirectory(FilePath);
}
var serialize = new System.Web.Script.Serialization.JavaScriptSerializer();
string[] tempdataArr = new string[] { FilePath, temp2[i], companyName, itemPrice, companyTel, paraType, para };
writeFile("txt组装成功!------------------------------------------------------------------------------------------"+tempdataArr + "\n");
string tempdata = serialize.Serialize(tempdataArr);
FileStream fs = new FileStream(FilePath + "\\" + FileName + "text.txt", FileMode.Create);
//获得字节数组
byte[] data = System.Text.Encoding.UTF8.GetBytes(tempdata.ToString());
//开始写入
fs.Write(data, 0, data.Length);
//清空缓冲区、关闭流
fs.Flush();
writeFile("txt写入成功!---------------------------------------------------------------------------------------------" + "\n");
Base64ToImg(temp1[i], FilePath, FileName + ".png");
Bitmap map = new Bitmap(FilePath + "\\" + FileName + ".png");
NormalMapGenerator normalMapGenerator = new NormalMapGenerator();
normalMapGenerator.Init();
normalMapGenerator.ComputeHeightData(map, 1);
normalMapGenerator.ComputeMapNormal();
writeFile("开始写auto图!" + "-------------------------------------------------------------------------------------------\n");
normalMapGenerator.ImageNormal.Save(FilePath + "\\" + FileName + "aotu.png");
writeFile("auto图写入成功!" + "-----------------------------------------------------------------------------------------\n");
Bitmap b = normalMapGenerator.GetThumbnail(map, 100, 100);
writeFile("开始写small图!" + "------------------------------------------------------------------------------------------\n");
b.Save(FilePath + "\\" + FileName + "small.jpg");
writeFile("small图写入成功!" + "----------------------------------------------------------------------------------------\n");
result += "\\sharing\\itemPic\\" + FileName + "small.jpg" + ",";
}
result = result.Remove(result.LastIndexOf(','));
writeFile("生成result!" + result + "----------------------------------------------------------------------------------------\n");
return result;
}else
{
return "数据错误!";
}
}
catch (Exception)
{
return "false";
}
}
}
创建简单的web空网站 发布到iis上。
二、写本地程序
//post程序
private static string HttpPostConnectToServer(string serverUrl, string postData)
{
var dataArray = Encoding.UTF8.GetBytes(postData);
//创建请求
var request = (HttpWebRequest)HttpWebRequest.Create(serverUrl);
request.Method = "POST";
request.ContentLength = dataArray.Length;
//设置上传服务的数据格式
request.ContentType = "application/x-www-form-urlencoded";
//请求的身份验证信息为默认
request.Credentials = CredentialCache.DefaultCredentials;
//请求超时时间
request.Timeout = 10000;
//创建输入流
Stream dataStream;
//using (var dataStream = request.GetRequestStream())
//{
// dataStream.Write(dataArray, 0, dataArray.Length);
// dataStream.Close();
//}
try
{
dataStream = request.GetRequestStream();
}
catch (Exception)
{
return null;//连接服务器失败
}
//发送请求
dataStream.Write(dataArray, 0, dataArray.Length);
dataStream.Close();
//读取返回消息
string res;
try
{
var response = (HttpWebResponse)request.GetResponse();
var reader = new StreamReader(response.GetResponseStream(), Encoding.UTF8);
res = reader.ReadToEnd();
reader.Close();
}
catch (Exception ex)
{
return "{\"error\":\"connectToServer\",\"error_description\":\"" + ex.Message + "\"}";//连接服务器失败
}
return res;
}
public static string SaveFile(string base64,string itemName, string itemPrice, string userAccount, string paraType, string para)
{
Shop_BLL b_shop = new Shop_BLL();
DataTable dt = new DataTable();
string companyTel ="";
string companyName = "";
if(itemPrice!="0")
dt = b_shop.getUserCompanyData(userAccount);
if (dt.Rows.Count > 0)
{
companyTel = dt.Rows[0][4].ToString();
companyName = dt.Rows[0][1].ToString();
}
//localhost
string url = "http://119.23.232.36:3000/default.aspx";
string data = "base64=" + base64 + "&itemName=" + itemName + "&itemPrice=" + itemPrice + "¶Type=" + paraType + "¶=" + para + "&companyTel=" + companyTel + "&companyName=" + companyName;
string result = HttpPostConnectToServer(url, data);
result = result.Remove(result.IndexOf("\r\n"));
return result;
}