Comment convertir un fichier en tableau d'octets directement sans son chemin (sans enregistrer le fichier)
Voici mon code:
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));
}
Maintenant, je suis à la Conversion de ce fichier dans le tableau d'octets à l'aide de ce code:
var filepath = Path.Combine(_environment.WebRootPath, "uploads/Book1.xlsx");
byte[] fileBytes = System.IO.File.ReadAllBytes(filepath);
string s = Convert.ToBase64String(fileBytes);
Et ensuite j'envoie ce code dans ma base de données nosql.C'est tous fonctionne bien mais le problème c'est que je ne veux pas enregistrer le fichier. Au lieu de cela, je veux télécharger directement le fichier dans ma base de données. Et il peut être possible si je peux convertir le fichier dans le tableau d'octets directement sans l'enregistrer.
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
}
source d'informationauteur Kalp
Vous devez vous connecter pour publier un commentaire.
Par opposition à l'enregistrement des données sous forme de chaîne de caractères (qui alloue plus de mémoire que nécessaire et peut ne pas fonctionner si les données binaires a des octets nuls), je vous recommande une approche plus comme
Aussi, pour le bénéfice des autres,
IFormFile
est documenté sur docs.asp.net avec le code source sur GitHubModifier
Par les suggestions, j'ai modifié l'exemple d'utiliser le
CopyTo
méthode de laIFormFile
interfaceVous pouvez utiliser le code suivant pour le convertir en un tableau d'octets: