using System; using System.Threading.Tasks; using System.Windows.Forms; using CsharpHttpHelper; using System.Net.Http; using System.IO; using System.Text; using DeviceRepair.DataAccess; namespace Test { public partial class Form1 : Form { private readonly HttpClient _httpClient; public static readonly string ServiceUrl = $"http://localhost/DeviceRepairAPI/"; string auth = "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJBdXRvSUQiOjEsIkxvZ2luQ29kZSI6ImFkbWluIiwiUGFzc1dvcmQiOiIyOTAyRUExQzFDQzJDNzcwQTI5RTA4RkJGRTQyMkUwQSIsIlJlYWxOYW1lIjoi566h55CG5ZGYIiwiR2VuZGVyIjowLCJCaXJ0aGRheSI6IlwvRGF0ZSgtNjg0NzgzMzYwMDAwMClcLyIsIlBob25lIjoiMTM4MDAwMDAwMDAiLCJFbWFpbCI6ImZlbmcuY2FpQHRlY2hzY2FuLmNuIiwiUm9sZUdyb3VwIjoxLCJSb2xlTmFtZSI6bnVsbCwiU3RhdHVzIjp0cnVlLCJDcmVhdGVCeSI6MCwiQ3JlYXRlRGF0ZSI6IlwvRGF0ZSgtNjg0NzgzMzYwMDAwMClcLyIsIk1vZGlmeUJ5IjoxLCJNb2RpZnlEYXRlIjoiXC9EYXRlKDE3MDg4Nzg0NDk2NjMpXC8iLCJMYXN0TG9naW5UaW1lIjoiXC9EYXRlKC02ODQ3ODMzNjAwMDAwKVwvIiwiTGFzdFB3ZEFsdGVyVGltZSI6IlwvRGF0ZSgtNjg0NzgzMzYwMDAwMClcLyIsIkRlc2NyaXB0aW9uIjoiMTIzNDU2IiwiTWFjQWRkcmVzcyI6IjM4OkQ1OjdBOkU1OjQyOjBEIiwiSVBBZGRyZXNzIjoiMTkyLjE2OC4xMC43IiwiQ29tcHV0ZXJOYW1lIjoiSE9OT1IifQ.xvD0TiTe7L4-IqYpRRTTAOWHNo2XYzeoIAUAf_EXP8c"; public Form1() { InitializeComponent(); _httpClient = new HttpClient(); } HttpHelper helper; private HttpHelper web { get { if (helper == null) helper = new HttpHelper(); return helper; } } private void button1_Click_1(object sender, EventArgs e) { } private void Form1_Load(object sender, EventArgs e) { this.textBox1.Text = @"http://localhost/DeviceRepairAPI/api/MaintenanceForm/DownloadFile?AutoID=1"; } public void Init(ref HttpItem item) { if (string.IsNullOrEmpty(ServiceUrl)) throw new Exception("调用API失败,参数ServiceUrl不能为null!"); item.Header.Add("auth", auth); //item.Header.Add("ClientName", ComputerHelper.GetComputerName); //item.Header.Add("ClientMac", ComputerHelper.GetMacAddress); //item.Header.Add("IPAddress", ComputerHelper.GetIPAddress); item.Timeout = 10000; item.PostEncoding = Encoding.UTF8; item.URL = JoinUrl(item.URL); } /// /// URL 拼接 /// /// /// private string JoinUrl(string relativePath) { relativePath = relativePath.TrimStart('/'); // 使用 UriKind.Absolute 表示 baseUrl 是绝对路径 var baseUri = new Uri(ServiceUrl, UriKind.Absolute); var relativeUri = new Uri(baseUri, relativePath); return relativeUri.ToString(); } /// /// /// /// /// private void button1_Click(object sender, EventArgs e) { try { using (FileStream fileStream = new FileStream("C:\\aaa.xlsx", FileMode.Open, FileAccess.Read)) { } //DriveInfomationModel entity = DriveInformationMaintenance.Instance().GetModelByEquipmentID(id); //textBox2.Text = JsonConvert.SerializeObject(entity); ////通过点检表主键ID获取点检表并保存到缓存目录 //string templatePath = MaintenanceFormVersionMaintenance.Instance.GetFileSingle(entity.MaintenanceFormVersion); //MessageBox.Show(templatePath); //HttpHelper http = new HttpHelper(); //HttpItem item = new HttpItem //{ // URL = ServiceRoute.GetCurrentDateTime, // Method = "Post", // ContentType = "application/text; charset=utf-8", //}; //Init(ref item); ////请求的返回值对象 //HttpResult result = http.GetHtml(item); ////获取返回值 //string CurrentDateTime = result.Html.Trim('"'); //textBox1.Text = CurrentDateTime; } catch (Exception ex) { throw new Exception(ex.Message); } //string a = "2024.01"; //DateTime t; //if (DateTime.TryParse(a, out t)) //{ // MessageBox.Show(t.ToString("yyyy-MM-dd")); //} //else //{ // MessageBox.Show("失败"); //} //return; //using (var db = SqlSugarHelper.dbClient) //{ //int Year = DateTime.Today.Year; //int Month = DateTime.Today.Month; //var lst = db.Queryable() // .Where(x => !SqlFunc.Subqueryable().Where(p => p.PlanPrimaryID == x.AutoID && p.PlanType == x.MaintenanceType).Any()) // .Where(x => x.MaintenanceYear == Year && x.MaintenanceMonth == Month).ToList(); // var datas = db.Queryable((p, device, form) => new object[] // { // JoinType.Left,p.EquipmentID == device.AutoID, // JoinType.Left,device.MaintenanceFormVersion == form.AutoID // }).Where((p, device, form) => p.AutoID == 362).Select((p, device, form) => new { p, form }).First(); //} ////创建Httphelper对象 //HttpHelper http = new HttpHelper(); ////创建Httphelper参数对象 //HttpItem item = new HttpItem() //{ // URL = textBox1.Text, // Method = "get", // ContentType = "application/vnd.ms-excel", // ResultType = ResultType.Byte //}; //HttpResult result = http.GetHtml(item); ////Header //WebHeaderCollection header = result.Header; //if (header != null) //{ // string fileName = header["FileName"]; // if (!string.IsNullOrWhiteSpace(fileName)) // { // File.WriteAllBytes($@"C:\Users\Clove\Desktop\{fileName}", result.ResultByte); // } //} //upload(); //UploadFileAsync(@"D:\WorkStation\设备维护管理软件\Documentation\FM-P0047.02西铁城纵切机床定期维护点检表 - 副本.xlsx"); //string filePath = @"D:\WorkStation\设备维护管理软件\Documentation\FM-P0047.02西铁城纵切机床定期维护点检表 - 副本.xlsx"; //using (var fileStream = new FileStream(filePath, FileMode.Open, FileAccess.Read)) //using (BinaryReader br = new BinaryReader(fileStream)) //{ // long numBytes = new FileInfo(filePath).Length; // byte[] fileBytes = br.ReadBytes((int)numBytes); // HttpResult result = web.GetHtml(new HttpItem // { // URL = textBox1.Text, // Method = "post", // //Postdata = JsonConvert.SerializeObject(new { value = "fsdjlk" }), // ContentType = "text/json", // ResultType = ResultType.Byte, // PostdataByte = fileBytes, // Accept = "application/octet-stream", // Header = // { // { "auth","eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJBdXRvSUQiOjEsIkxvZ2luQ29kZSI6ImFkbWluIiwiUGFzc1dvcmQiOiI5NkU3OTIxODk2NUVCNzJDOTJBNTQ5REQ1QTMzMDExMiIsIlJlYWxOYW1lIjoi566h55CG5ZGYIiwiR2VuZGVyIjoxLCJCaXJ0aGRheSI6IlwvRGF0ZSgxNjkzNDcxNjA0NzcwKVwvIiwiUGhvbmUiOiIxMzgwMDAwMDAwMCIsIlJ1bGVHcm91cCI6MCwiTWFjQWRkcmVzcyI6IjM4OkQ1OjdBOkU1OjQyOjBEIiwiSVBBZGRyZXNzIjoiMTkyLjE2OC4xMC43IiwiQ29tcHV0ZXJOYW1lIjoiSE9OT1IifQ.oaDvAu6wcWhSGottHf1yArxhqM2SAAsUYPmhhNvBdeY" } // } // }); // MessageBox.Show(result.Html); } private const int ChunkSize = 1024; // 1MB private long _totalSize; private long _uploadedSize; string _filePath; async void upload() { _filePath = @"D:\WorkStation\设备维护管理软件\Documentation\FM-P0047.02西铁城纵切机床定期维护点检表 - 副本.xlsx"; _totalSize = new FileInfo(_filePath).Length; _uploadedSize = 0; progressBar1.Minimum = 0; progressBar1.Maximum = (int)(_totalSize / ChunkSize); progressBar1.Value = 0; await UploadChunks(); } private async Task UploadChunks() { using (FileStream fileStream = new FileStream(_filePath, FileMode.Open, FileAccess.Read, FileShare.ReadWrite)) { byte[] buffer = new byte[ChunkSize]; int bytesRead; long startByte = 0; while ((bytesRead = await fileStream.ReadAsync(buffer, 0, buffer.Length)) > 0) { HttpContent content = new ByteArrayContent(buffer, 0, bytesRead); content.Headers.ContentType = new System.Net.Http.Headers.MediaTypeHeaderValue("multipart/form-data"); content.Headers.ContentDisposition = new System.Net.Http.Headers.ContentDispositionHeaderValue("attachment") { FileName = Path.GetFileName(_filePath), Size = bytesRead, }; content.Headers.ContentRange = new System.Net.Http.Headers.ContentRangeHeaderValue(startByte, startByte + bytesRead - 1, _totalSize); HttpResponseMessage response = await _httpClient.PostAsync(textBox1.Text, content); if (response.IsSuccessStatusCode) { _uploadedSize += bytesRead; progressBar1.Value = (int)(_uploadedSize / ChunkSize); startByte += bytesRead; } else { // Handle error, such as logging the error and possibly retrying the upload MessageBox.Show("Error uploading chunk. Please try again."); break; } } } } public async Task UploadFileAsync(string filePath) { using (var fileStream = new FileStream(filePath, FileMode.Open, FileAccess.Read)) using (var multipartContent = new MultipartFormDataContent()) { var fileContent = new StreamContent(fileStream); fileContent.Headers.ContentType = new System.Net.Http.Headers.MediaTypeHeaderValue("multipart/form-data"); fileContent.Headers.ContentDisposition = new System.Net.Http.Headers.ContentDispositionHeaderValue("attachment") { FileName = Guid.NewGuid() + "", Size = fileStream.Length }; multipartContent.Add(fileContent, "file", Path.GetFileName(filePath)); HttpResponseMessage response = await _httpClient.PostAsync(textBox1.Text, multipartContent); if (response.IsSuccessStatusCode) { Console.WriteLine("File uploaded successfully."); } else { Console.WriteLine("Failed to upload file. Status code: " + response.StatusCode); } } } private void button2_Click(object sender, EventArgs e) { // PlanAccess.Instance.Single(1); } } }