Как превратить массив байтов в файл и автоматически открыть его с помощью С#?
Я пишу код для добавления вложений файлов в приложение, которое я создаю.
У меня есть добавление и удаление работы, но я не знаю, с чего начать открывать.
У меня есть массив байтов (из поля таблицы), и я не знаю, как сделать его автоматически открытым, например.
Если у меня есть массив байтов, который является PDF файлом, как я могу заставить мое приложение автоматически открывать Acrobat или что-то, что назначенное в настоящее время приложение для расширения использует С#?
Ответы
Ответ 1
Чтобы открыть его в любом внешнем приложении, вам необходимо записать байты на диск, а затем использовать Process.Start для запуска связанного приложения во временном файле. Просто передайте временное имя файла (с соответствующим расширением) в качестве единственного аргумента Process.Start и он откроет этот файл в соответствующем приложении.
Некоторые приложения могут иметь способ подачи потока байтов, но это должно быть явно обработано целевым приложением.
Для примера кода вы можете сделать что-то вроде:
byte[] filedata = GetMyByteArray();
string extension = GetTheExtension(); // "pdf", etc
string filename =System.IO.Path.GetTempFileName() + "." + extension; // Makes something like "C:\Temp\blah.tmp.pdf"
File.WriteAllBytes(filename, filedata);
var process = Process.Start(filename);
// Clean up our temporary file...
process.Exited += (s,e) => System.IO.File.Delete(filename);
Ответ 2
Это может помочь немного
byte[] bytes = File.ReadAllBytes(@"C:\temp\file.pdf");
string outpath = @"c:\temp\openme.pdf";
File.WriteAllBytes(outpath, bytes);
Process.Start(outpath);
Просто записывает байт [] на диск, а затем запускает его с соответствующим приложением.
Ответ 3
Запишите данные во временный файл и откройте его с помощью процесса. Это будет использовать стандартную программу, настроенную для типа файла. (например, txt > блокнот)
byte[] b = new byte[]{0x0};
var fileName = "c:\\test.txt";
System.IO.File.WriteAllBytes(fileName, b);
System.Diagnostics.Process.Start(fileName);
Ответ 4
// get the PDF in byte form from the system
var bytes = GetFileBytes("Some identifier");
// get a valid temporary file name and change the extension to PDF
var tempFileName = Path.ChangeExtension(Path.GetTempFileName(), "PDF");
// write the bytes of the PDF to the temp file
File.WriteAllBytes(tempFileName, bytes);
// Ask the system to handle opening of this file
Process.Start(tempFileName);