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
52 lines
1.8 KiB
using System;
|
|
using System.Collections.Generic;
|
|
using System.IO;
|
|
using System.Net.Http;
|
|
using System.Text;
|
|
|
|
namespace Shentun.Utilities
|
|
{
|
|
public class FileHelper
|
|
{
|
|
public static string ToBase64(string filename)
|
|
{
|
|
Stream stream;
|
|
string fileBase64;
|
|
if (filename.StartsWith("http"))
|
|
{
|
|
using (var httpClientHandler = new HttpClientHandler())
|
|
{
|
|
using (var httpClient = new HttpClient(httpClientHandler))
|
|
{
|
|
var response = httpClient.GetAsync(filename).Result;
|
|
if (response.IsSuccessStatusCode)
|
|
{
|
|
var contentStream = response.Content.ReadAsStreamAsync().Result;
|
|
using var memoryStream = new MemoryStream();
|
|
contentStream.CopyTo(memoryStream);
|
|
var fileBytes = memoryStream.ToArray();
|
|
return Convert.ToBase64String(fileBytes);
|
|
}
|
|
else
|
|
{
|
|
throw new Exception("转换base64时,返回错误:" + response.StatusCode);
|
|
}
|
|
}
|
|
}
|
|
|
|
}
|
|
else
|
|
{
|
|
using (stream = new FileStream(filename, FileMode.Open, FileAccess.Read))
|
|
{
|
|
byte[] byteData = new byte[stream.Length];
|
|
stream.Read(byteData, 0, byteData.Length);
|
|
fileBase64 = Convert.ToBase64String(byteData);
|
|
stream.Close();
|
|
}
|
|
return fileBase64;
|
|
}
|
|
|
|
}
|
|
}
|
|
}
|