208 lines
		
	
	
		
			7.6 KiB
		
	
	
	
		
			C#
		
	
	
	
			
		
		
	
	
			208 lines
		
	
	
		
			7.6 KiB
		
	
	
	
		
			C#
		
	
	
	
| using System;
 | ||
| using System.IO;
 | ||
| using System.Linq;
 | ||
| using System.Net;
 | ||
| using System.Text;
 | ||
| 
 | ||
| namespace BLL
 | ||
| {
 | ||
|     public static class APIUpLoadFileService
 | ||
|     {
 | ||
|         public static string Pic(string url, string filePath)
 | ||
|         {
 | ||
|             // 时间戳,用做boundary
 | ||
|             string timeStamp = DateTime.Now.Ticks.ToString("x");
 | ||
|             //根据uri创建HttpWebRequest对象
 | ||
|             HttpWebRequest httpReq = (HttpWebRequest)WebRequest.Create(new Uri(url));
 | ||
|             httpReq.Method = "POST";
 | ||
|             httpReq.AllowWriteStreamBuffering = false; //对发送的数据不使用缓存
 | ||
|             httpReq.Timeout = 300000;  //设置获得响应的超时时间(300秒)
 | ||
|             httpReq.ContentType = "multipart/form-data; boundary=" + timeStamp;
 | ||
|             //文件
 | ||
|             FileStream fileStream = new FileStream(filePath, FileMode.Open, FileAccess.Read);
 | ||
|             BinaryReader binaryReader = new BinaryReader(fileStream);
 | ||
|             //头信息
 | ||
|             string boundary = "--" + timeStamp;
 | ||
|             string dataFormat = boundary + "\r\nContent-Disposition: form-data; name=imgs;filename=\"{1}\"\r\nContent-Type:application/octet-stream\r\n\r\n";
 | ||
|             string header = string.Format(dataFormat, "file", Path.GetFileName(filePath));
 | ||
|             byte[] postHeaderBytes = Encoding.UTF8.GetBytes(header);
 | ||
| 
 | ||
|             //结束边界
 | ||
|             byte[] boundaryBytes = Encoding.ASCII.GetBytes("\r\n--" + timeStamp + "--\r\n");
 | ||
| 
 | ||
|             long length = fileStream.Length + postHeaderBytes.Length + boundaryBytes.Length;
 | ||
| 
 | ||
|             httpReq.ContentLength = length;//请求内容长度
 | ||
|             string returnValue = "";
 | ||
|             try
 | ||
|             {
 | ||
|                 //每次上传4k
 | ||
|                 int bufferLength = 4096;
 | ||
|                 byte[] buffer = new byte[bufferLength];
 | ||
| 
 | ||
|                 //已上传的字节数
 | ||
|                 long offset = 0;
 | ||
|                 int size = binaryReader.Read(buffer, 0, bufferLength);
 | ||
|                 Stream postStream = httpReq.GetRequestStream();
 | ||
| 
 | ||
|                 //发送请求头部消息
 | ||
|                 postStream.Write(postHeaderBytes, 0, postHeaderBytes.Length);
 | ||
| 
 | ||
|                 while (size > 0)
 | ||
|                 {
 | ||
|                     postStream.Write(buffer, 0, size);
 | ||
|                     offset += size;
 | ||
|                     size = binaryReader.Read(buffer, 0, bufferLength);
 | ||
|                 }
 | ||
| 
 | ||
|                 //添加尾部边界
 | ||
|                 postStream.Write(boundaryBytes, 0, boundaryBytes.Length);
 | ||
|                 postStream.Close();
 | ||
| 
 | ||
|                 //获取服务器端的响应
 | ||
|                 using (HttpWebResponse response = (HttpWebResponse)httpReq.GetResponse())
 | ||
|                 {
 | ||
|                     Stream receiveStream = response.GetResponseStream();
 | ||
|                     StreamReader readStream = new StreamReader(receiveStream, Encoding.UTF8);
 | ||
|                     returnValue = readStream.ReadToEnd();
 | ||
|                     response.Close();
 | ||
|                     readStream.Close();
 | ||
|                 }
 | ||
|             }
 | ||
|             catch (Exception ex)
 | ||
|             {
 | ||
|                 returnValue = "";
 | ||
|             }
 | ||
|             finally
 | ||
|             {
 | ||
|                 fileStream.Close();
 | ||
|                 binaryReader.Close();
 | ||
|             }
 | ||
|             return returnValue;
 | ||
|         }
 | ||
| 
 | ||
| 
 | ||
|         public static String saveImg(String url)
 | ||
|         {
 | ||
|             WebClient mywebclient = new WebClient();
 | ||
|             string newfilename = Guid.NewGuid() + DateTime.Now.Year.ToString() + DateTime.Now.Month.ToString() + DateTime.Now.Day.ToString() + DateTime.Now.Hour.ToString() + DateTime.Now.Minute.ToString() + DateTime.Now.Second.ToString() + ".jpg";
 | ||
|             string subPath = @"d:\imgs\";
 | ||
|             if (false == System.IO.Directory.Exists(subPath))
 | ||
|             {
 | ||
|                 //创建pic文件夹
 | ||
|                 Directory.CreateDirectory(subPath);
 | ||
|             }
 | ||
|             string filepath = @"d:\imgs\" + newfilename;
 | ||
|             try
 | ||
|             {
 | ||
|                 mywebclient.DownloadFile(url, filepath);
 | ||
|             }
 | ||
|             catch (Exception ex)
 | ||
|             {
 | ||
|                 filepath = "";
 | ||
|             }
 | ||
|             return filepath;
 | ||
|         }
 | ||
| 
 | ||
|         /// <summary>
 | ||
|         /// 保存附件方法
 | ||
|         /// </summary>
 | ||
|         public static void SaveAttachUrl(Model.ToDoItem toDoItem)
 | ||
|         {
 | ||
|             using (Model.SGGLDB db = new Model.SGGLDB(Funs.ConnString))
 | ||
|             {
 | ||
|                 ////保存附件
 | ||
|                 if (!string.IsNullOrEmpty(toDoItem.UrlStr))
 | ||
|                 {
 | ||
|                     if (toDoItem.IsInsert == "1")
 | ||
|                     {
 | ||
|                         var att = db.AttachFile.FirstOrDefault(x => x.ToKeyId == toDoItem.DataId);
 | ||
|                         if (att != null)
 | ||
|                         {
 | ||
|                             toDoItem.UrlStr = att.AttachUrl + "," + toDoItem.UrlStr;
 | ||
|                         }
 | ||
|                     }
 | ||
|                     UploadFileService.SaveAttachUrl(UploadFileService.GetSourceByAttachUrl(toDoItem.UrlStr, 10, null), toDoItem.UrlStr, toDoItem.MenuId, toDoItem.DataId);
 | ||
|                 }
 | ||
|                 else
 | ||
|                 {
 | ||
|                     CommonService.DeleteAttachFileById(toDoItem.DataId);
 | ||
|                 }
 | ||
|             }
 | ||
|         }
 | ||
| 
 | ||
|         public static void SaveAttachUrl(string menuId, string dataId, string url, string isInsert)
 | ||
|         {
 | ||
|             ////保存附件
 | ||
|             if (!string.IsNullOrEmpty(url))
 | ||
|             {
 | ||
|                 if (isInsert == "1")
 | ||
|                 {
 | ||
|                     var att = Funs.DB.AttachFile.FirstOrDefault(x => x.ToKeyId == dataId);
 | ||
|                     if (att != null)
 | ||
|                     {
 | ||
|                         url = att.AttachUrl + "," + url;
 | ||
|                     }
 | ||
|                 }
 | ||
|                 UploadFileService.SaveAttachUrl(UploadFileService.GetSourceByAttachUrl(url, 10, null), url, menuId, dataId);
 | ||
|             }
 | ||
|             else
 | ||
|             {
 | ||
|                 CommonService.DeleteAttachFileById(dataId);
 | ||
|             }
 | ||
|         }
 | ||
| 
 | ||
|         /// <summary>
 | ||
|         ///  获取附件路径
 | ||
|         /// </summary>
 | ||
|         /// <returns></returns>
 | ||
|         public static string getFileUrl(string tokeyId, string url)
 | ||
|         {
 | ||
|             string fileUrl = url;
 | ||
|             using (Model.SGGLDB db = new Model.SGGLDB(Funs.ConnString))
 | ||
|             {
 | ||
|                 if (!string.IsNullOrEmpty(tokeyId))
 | ||
|                 {
 | ||
|                     var getAtt = db.AttachFile.FirstOrDefault(x => x.ToKeyId == tokeyId);
 | ||
|                     if (getAtt != null && !string.IsNullOrEmpty(getAtt.AttachUrl))
 | ||
|                     {
 | ||
|                         fileUrl = getAtt.AttachUrl;
 | ||
|                     }
 | ||
|                 }
 | ||
| 
 | ||
|                 if (!string.IsNullOrEmpty(fileUrl))
 | ||
|                 {
 | ||
|                     fileUrl = fileUrl.Replace('\\', '/');
 | ||
|                 }
 | ||
|             }
 | ||
|             return fileUrl;
 | ||
|         }
 | ||
| 
 | ||
|         /// <summary>
 | ||
|         ///  获取附件路径
 | ||
|         /// </summary>
 | ||
|         /// <returns></returns>
 | ||
|         public static string getFileUrl(string menuId, string tokeyId, string url)
 | ||
|         {
 | ||
|             string fileUrl = url;
 | ||
|             using (Model.SGGLDB db = new Model.SGGLDB(Funs.ConnString))
 | ||
|             {
 | ||
|                 if (!string.IsNullOrEmpty(tokeyId))
 | ||
|                 {
 | ||
|                     var getAtt = db.AttachFile.FirstOrDefault(x =>x.MenuId== menuId &&  x.ToKeyId == tokeyId);
 | ||
|                     if (getAtt != null && !string.IsNullOrEmpty(getAtt.AttachUrl))
 | ||
|                     {
 | ||
|                         fileUrl = getAtt.AttachUrl;
 | ||
|                     }
 | ||
|                 }
 | ||
| 
 | ||
|                 if (!string.IsNullOrEmpty(fileUrl))
 | ||
|                 {
 | ||
|                     fileUrl = fileUrl.Replace('\\', '/');
 | ||
|                 }
 | ||
|             }
 | ||
|             return fileUrl;
 | ||
|         }
 | ||
|     }
 | ||
| }
 |