You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

52 lines
1.8 KiB

  1. using System;
  2. using System.Collections.Generic;
  3. using System.IO;
  4. using System.Net.Http;
  5. using System.Text;
  6. namespace Shentun.Utilities
  7. {
  8. public class FileHelper
  9. {
  10. public static string ToBase64(string filename)
  11. {
  12. Stream stream;
  13. string fileBase64;
  14. if (filename.StartsWith("http"))
  15. {
  16. using (var httpClientHandler = new HttpClientHandler())
  17. {
  18. using (var httpClient = new HttpClient(httpClientHandler))
  19. {
  20. var response = httpClient.GetAsync(filename).Result;
  21. if (response.IsSuccessStatusCode)
  22. {
  23. var contentStream = response.Content.ReadAsStreamAsync().Result;
  24. using var memoryStream = new MemoryStream();
  25. contentStream.CopyTo(memoryStream);
  26. var fileBytes = memoryStream.ToArray();
  27. return Convert.ToBase64String(fileBytes);
  28. }
  29. else
  30. {
  31. throw new Exception("转换base64时,返回错误:" + response.StatusCode);
  32. }
  33. }
  34. }
  35. }
  36. else
  37. {
  38. using (stream = new FileStream(filename, FileMode.Open, FileAccess.Read))
  39. {
  40. byte[] byteData = new byte[stream.Length];
  41. stream.Read(byteData, 0, byteData.Length);
  42. fileBase64 = Convert.ToBase64String(byteData);
  43. stream.Close();
  44. }
  45. return fileBase64;
  46. }
  47. }
  48. }
  49. }