Как я поворачиваю массив байтов назад в файл и открываю его автоматически с C#?

Я пишу некоторый код для добавления файловых вложений в приложение, которое я создаю.

Я имею, добавляют и Удаляют работу, но я не знаю, где начать реализовывать открытый.

У меня есть массив байтов (из поля таблицы), и я не знаю, как заставить его автоматически открыться, например.

Если у меня есть массив байтов, который является PDF, как я заставляю свое приложение автоматически открывать Acrobat или независимо от того, что в настоящее время присваиваемое приложение для расширения использует C#?

14
задан Ace Grace 23 March 2010 в 15:06
поделиться

4 ответа

По порядку чтобы открыть его в любом внешнем приложении, вам нужно записать байты на диск, а затем использовать 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); 
18
ответ дан 1 December 2019 в 12:51
поделиться

Это может немного помочь

        byte[] bytes = File.ReadAllBytes(@"C:\temp\file.pdf");

        string outpath = @"c:\temp\openme.pdf";
        File.WriteAllBytes(outpath, bytes);
        Process.Start(outpath);

Просто записывает байт [] в disk, а затем запускает его со связанным приложением.

3
ответ дан 1 December 2019 в 12:51
поделиться
// 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);
0
ответ дан 1 December 2019 в 12:51
поделиться

Запишите данные во временный файл и откройте его с помощью Process. Это будет использовать стандартную программу, настроенную для данного типа файла. (например, txt> notepad)

        byte[] b = new byte[]{0x0};
        var fileName = "c:\\test.txt";
        System.IO.File.WriteAllBytes(fileName, b);
        System.Diagnostics.Process.Start(fileName);
0
ответ дан 1 December 2019 в 12:51
поделиться
Другие вопросы по тегам:

Похожие вопросы: