baza jest stworzona prze ze mnie, obecnie pobieram go w ten sposób:
Kopiuj
public static byte[] GetFileAppendage(int subtyp, int typ, int kartoteka, string sFileName)
{
using (EntitiesPOK db = new EntitiesPOK())
{
var wynik = from c in db.FileAppendage
where c.typ == typ && c.subtyp == subtyp && c.kartoteka == kartoteka && c.nazwaPliku == sFileName
select c;
foreach (var item in wynik)
{
if (item.subtyp == subtyp && item.typ == typ && item.kartoteka == kartoteka && item.nazwaPliku == sFileName)
return item.plikByte;
}
}
return null;
}
metoda do konwersji z byte na plik i zapis.
Kopiuj
public void RedByteFileAndSave(byte[]byteFile,string path)
{
try
{
byte[] bytes = byteFile;
int numBytesToRead = bytes.Length;
using (FileStream fsNew = new FileStream(path,
FileMode.Create, FileAccess.Write))
{
fsNew.Write(bytes, 0, numBytesToRead);
}
}
catch (FileNotFoundException ioEx)
{
MessageBox.Show(ioEx.Message);
}
}
wywołanie:
Kopiuj
SaveFileDialog saveFileDlg = new SaveFileDialog();
saveFileDlg.FileName = "fileName.txt";
saveFileDlg.InitialDirectory = Directory.GetCurrentDirectory();
if (saveFileDlg.ShowDialog() == DialogResult.OK)
{
if (saveFileDlg.FileName != "")
{
string pathNew = @"D:\newfile.txt";
AttendanceOfEnclosure fread = new AttendanceOfEnclosure();
fread.RedByteFileAndSave(DatabaseRepositoryFileAppendage.GetFileAppendage(2, 0, 0,saveFileDlg.FileName), pathNew);
}
}
to działa jak najbardziej poprawnie jednak pytam czy jest możliwość otworzenia pliku bez konieczności jego zapisania na dysku.
Aby otworzyć ten plik to wystarczy wykonać:
Kopiuj
System.Diagnostics.Process.Start(@"D:\newfile.txt");
jednak chciał bym uniknąć zapisywania i kasowania plików, nie do końca też mam pomysł jak się zachować podczas edycji - z aplikacji będzie korzystał więcej niż jeden użytkownik.