Oto mój kod:Jak przekonwertować plik do tablicy bajtów bezpośrednio bez swojej drodze (bez zapisywania pliku)
public async Task<IActionResult> Index(ICollection<IFormFile> files)
{
foreach (var file in files)
uploaddb(file);
var uploads = Path.Combine(_environment.WebRootPath, "uploads");
foreach (var file in files)
{
if (file.Length > 0)
{
var fileName = ContentDispositionHeaderValue.Parse(file.ContentDisposition).FileName.Trim('"');
await file.SaveAsAsync(Path.Combine(uploads, fileName));
}
Teraz jestem Konwersja ten plik do tablicy bajtów przy użyciu tego kodu:
var filepath = Path.Combine(_environment.WebRootPath, "uploads/Book1.xlsx");
byte[] fileBytes = System.IO.File.ReadAllBytes(filepath);
string s = Convert.ToBase64String(fileBytes);
Następnie przesyłam ten kod do mojej bazy danych nosql. To wszystko działa dobrze, ale problem polega na tym, że nie chcę zapisywać pliku. Zamiast tego chcę bezpośrednio przesłać plik do mojej bazy danych. I może to być możliwe, jeśli mogę po prostu przekonwertować plik na tablicę bajtów bezpośrednio, bez jej zapisywania.
public async Task<IActionResult> Index(ICollection<IFormFile> files)
{
foreach (var file in files)
uploaddb(file);
var uploads = Path.Combine(_environment.WebRootPath, "uploads");
foreach (var file in files)
{
if (file.Length > 0)
{
var fileName = ContentDispositionHeaderValue.Parse(file.ContentDisposition).FileName.Trim('"');
///Code to Convert the file into byte array
}
Um ... więc co dokładnie jest problem
IFormFile
? – Kevin* file.OpenReadStream() * poszukaj dokumentacji IFormFile.OpenReadStream – Gusman
Kiedy pierwotnie zapisałeś plik, w jakiej formie on był? Miałeś go jednak w pamięci, powinien już być tablicą bajtów lub tablicą bajtową. Musimy najpierw zobaczyć, w jaki sposób uzyskujesz plik i jak go zapisujesz. – Kevin