198 lines
8.4 KiB
C#
198 lines
8.4 KiB
C#
using System;
|
|
using System.IO;
|
|
using System.Linq;
|
|
using System.Net;
|
|
using System.Net.Http;
|
|
using System.Net.Http.Headers;
|
|
using System.Text;
|
|
using System.Web.Http;
|
|
using System.Web.Http.Results;
|
|
using WX.CRM.Common;
|
|
using WxFile.Api.Handle;
|
|
|
|
namespace WxFile.Api.Controllers
|
|
{
|
|
public class MessageController : ApiController
|
|
{
|
|
private static string _shareName;
|
|
private static string _isShare;
|
|
public MessageController()
|
|
{
|
|
_isShare = Utility.GetSettingByKey("IsShare");
|
|
if (!string.IsNullOrEmpty(_isShare))
|
|
{
|
|
//LogHelper.Info(_isShare);
|
|
try
|
|
{
|
|
_shareName = Utility.GetSettingByKey("NetUseShareName") ?? @"\\192.168.1.171\weixin";
|
|
string user = Utility.GetSettingByKey("NetUseUser") ?? @"192.168.1.171\admin";
|
|
string pwd = Utility.GetSettingByKey("NetUsePwd") ?? "read,./1";
|
|
NetUseHelper.Build(_shareName, user, pwd, string.Empty);//不指定盘符,避免引起盘符被占用的错误
|
|
}
|
|
catch (Exception e)
|
|
{
|
|
LogHelper.Error(e.ToString());
|
|
}
|
|
}
|
|
}
|
|
/// <summary>
|
|
/// 获取json文件
|
|
/// </summary>
|
|
/// <param name="jobusername"></param>
|
|
/// <param name="filename"></param>
|
|
/// <returns></returns>
|
|
[Route("Message/{jobusername}/{filename}")]
|
|
[HttpGet]
|
|
public HttpResponseMessage GetMessage(string jobusername, string filename)
|
|
{
|
|
string filepath = _shareName + @"\Message\" + jobusername + "\\" + filename;
|
|
//LogHelper.Info(filepath);
|
|
if (!File.Exists(filepath))
|
|
{
|
|
return new HttpResponseMessage { Content = new StringContent("", System.Text.Encoding.UTF8, "application/json") };
|
|
}
|
|
StringBuilder cld = new StringBuilder();
|
|
using (StreamReader sr = new StreamReader(filepath))
|
|
{
|
|
string line;
|
|
// 从文件读取并显示行,直到文件的末尾
|
|
while ((line = sr.ReadLine()) != null)
|
|
{
|
|
cld.Append(line);
|
|
}
|
|
}
|
|
|
|
return new HttpResponseMessage { Content = new StringContent(cld.ToString(), System.Text.Encoding.UTF8, "application/json") };
|
|
//return Content<string>(HttpStatusCode.OK, cld.ToString());
|
|
}
|
|
|
|
[Route("uploadfile_old/{month}/{filename}")]
|
|
[HttpGet]
|
|
public IHttpActionResult GetImg_old(string month, string filename)
|
|
{
|
|
string filepath = _shareName + @"\WXFILE\uploadfile\" + month + "\\" + filename;
|
|
var f = new FileInfo(filepath);
|
|
if (!f.Exists)
|
|
{
|
|
return new StatusCodeResult(HttpStatusCode.NotFound, this);
|
|
}
|
|
string contentype = System.Web.MimeMapping.GetMimeMapping(filepath);
|
|
if (!filename.Contains("."))
|
|
{
|
|
contentype = "image/jpeg";
|
|
}
|
|
return new FileStreamResult(f.OpenRead(), contentype ?? "application/octet-stream");
|
|
}
|
|
|
|
[Route("uploadfile2/{month}/{filename}")]
|
|
[HttpGet]
|
|
public HttpResponseMessage GetImg2(string month, string filename)
|
|
{
|
|
try
|
|
{
|
|
string filepath = _shareName + @"\WXFILE\uploadfile\" + month + "\\" + filename;
|
|
var f = new FileInfo(filepath);
|
|
if (!f.Exists)
|
|
{
|
|
return new HttpResponseMessage(HttpStatusCode.NoContent);
|
|
}
|
|
//var stream = new FileStream(filepath, FileMode.Open);
|
|
//byte[] expectedBytes = new byte[stream.Length];
|
|
|
|
|
|
//HttpResponseMessage response = new HttpResponseMessage(HttpStatusCode.OK);
|
|
//response.Content = new StreamContent(stream);
|
|
string contentype = System.Web.MimeMapping.GetMimeMapping(filepath);
|
|
if (!filename.Contains("."))
|
|
{
|
|
contentype = "image/jpeg";
|
|
}
|
|
HttpResponseMessage rsp = this.Request.CreateResponse(HttpStatusCode.OK);
|
|
byte[] buffer = System.IO.File.ReadAllBytes(filepath);
|
|
rsp.Content = new StreamContent(new MemoryStream(buffer));
|
|
//rsp.Headers.Add("Content-Type", contentype);
|
|
//rsp.Headers.Add("ContentType", contentype);
|
|
rsp.Content.Headers.ContentType = new MediaTypeHeaderValue(contentype);
|
|
LogHelper.Error("end:" + contentype);
|
|
return rsp;
|
|
}
|
|
catch (Exception e)
|
|
{
|
|
LogHelper.Error("错误了:" + e.ToString());
|
|
return new HttpResponseMessage(HttpStatusCode.NoContent);
|
|
}
|
|
}
|
|
[Route("uploadfile/{month}/{filename}")]
|
|
[HttpGet]
|
|
public HttpResponseMessage GetImg(string month, string filename)
|
|
{
|
|
try
|
|
{
|
|
string filePath = _shareName + @"\WXFILE\uploadfile\" + month + "\\" + filename;
|
|
var f = new FileInfo(filePath);
|
|
if (!f.Exists)
|
|
{
|
|
return new HttpResponseMessage(HttpStatusCode.NoContent);
|
|
}
|
|
//var stream = new FileStream(filepath, FileMode.Open);
|
|
//byte[] expectedBytes = new byte[stream.Length];
|
|
|
|
|
|
//HttpResponseMessage response = new HttpResponseMessage(HttpStatusCode.OK);
|
|
//response.Content = new StreamContent(stream);
|
|
string contentype = System.Web.MimeMapping.GetMimeMapping(filePath);
|
|
if (!filename.Contains("."))
|
|
{
|
|
contentype = "image/jpeg";
|
|
}
|
|
if (contentype.IndexOf("audio") > -1 || contentype.IndexOf("mp4") > -1)
|
|
{
|
|
//LogHelper.Error("end:" + contentype);
|
|
//HttpResponseMessage rsp = this.Request.CreateResponse(HttpStatusCode.OK);
|
|
HttpResponseMessage rsp = this.Request.CreateResponse(HttpStatusCode.PartialContent);
|
|
using (StreamReader sr = new StreamReader(filePath))
|
|
{
|
|
long size = 0, start = 0, end = 0;
|
|
size = sr.BaseStream.Length;
|
|
end = size - 1;
|
|
//rsp.Headers.AcceptRanges.Add("0-" + length.ToString());
|
|
rsp.Headers.AcceptRanges.Add("bytes");
|
|
if (this.Request.Headers.Range != null)
|
|
{
|
|
RangeItemHeaderValue requestRange = this.Request.Headers.Range.Ranges.First();
|
|
start = requestRange.From.Value;
|
|
long count = 1024 * 1024 * 5;
|
|
long anotherEnd = (start + count) > end ? end : (start + count);
|
|
end = requestRange.To == null ? anotherEnd : requestRange.To.Value;
|
|
}
|
|
sr.BaseStream.Seek(start, SeekOrigin.Begin);
|
|
byte[] buffer = new byte[end - start + 1];
|
|
sr.BaseStream.Read(buffer, 0, buffer.Length);
|
|
MemoryStream ms = new MemoryStream(buffer);
|
|
rsp.Content = new StreamContent(ms);
|
|
rsp.Content.Headers.ContentRange = new ContentRangeHeaderValue(start, end, size);
|
|
rsp.Content.Headers.ContentType = new MediaTypeHeaderValue(contentype);
|
|
return rsp;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
HttpResponseMessage rsp = this.Request.CreateResponse(HttpStatusCode.OK);
|
|
byte[] buffer = System.IO.File.ReadAllBytes(filePath);
|
|
rsp.Content = new StreamContent(new MemoryStream(buffer));
|
|
rsp.Content.Headers.ContentType = new MediaTypeHeaderValue(contentype);
|
|
//LogHelper.Error("end:" + contentype);
|
|
return rsp;
|
|
}
|
|
}
|
|
catch (Exception e)
|
|
{
|
|
LogHelper.Error("错误了:" + e.ToString());
|
|
return new HttpResponseMessage(HttpStatusCode.NoContent);
|
|
}
|
|
}
|
|
|
|
|
|
}
|
|
}
|