ChengDa_English/SGGL/BLL/API/APIUpLoadFileService.cs

211 lines
8.0 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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.SaveAttachUrlForApi(UploadFileService.GetSourceByAttachUrl(toDoItem.UrlStr, 10, null), toDoItem.UrlStr, toDoItem.MenuId, toDoItem.DataId);
}
else
{
CommonService.DeleteAttachFileByIdForApi(toDoItem.DataId);
}
}
}
public static void SaveAttachUrl(string menuId, string dataId, string url, string isInsert)
{
using (Model.SGGLDB db = new Model.SGGLDB(Funs.ConnString))
{
////保存附件
if (!string.IsNullOrEmpty(url))
{
if (isInsert == "1")
{
var att = db.AttachFile.FirstOrDefault(x => x.ToKeyId == dataId);
if (att != null)
{
url = att.AttachUrl + "," + url;
}
}
UploadFileService.SaveAttachUrlForApi(UploadFileService.GetSourceByAttachUrl(url, 10, null), url, menuId, dataId);
}
else
{
CommonService.DeleteAttachFileByIdForApi(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;
}
}
}