Had to add an attachment functionality to the project I am currently working on at work.
The snippets below use a simple web service (which I didn’t include) that saves the files uploaded to a database and returns the columns read.
You need at least three columns in the table: ID (PK, int), FILENAME (varchar) and CONTENT (BLOB).
// Attach this method to an upload button.
private void UploadFile(object sender, RoutedEventArgs e)
{
OpenFileDialog fileDialog = new OpenFileDialog();
// In case you want filtering.
fileDialog.DefaultExt = ".txt";
fileDialog.Filter = "Text documents (.txt)|*.txt";
bool? result = fileDialog.ShowDialog();
if (result == true)
{
using (FileStream fs = new FileStream(fileDialog.FileName, FileMode.Open, FileAccess.Read))
{
Byte[] b = new Byte[fs.Length];
fs.Read(b, 0, b.Length);
fs.Close();
try
{
// Save the byte array (b) to the BLOB column in the database.
// I am using a web service.
WebService.SaveAttachment(Path.GetFileName(fileDialog.FileName), b);
MessageBox.Show("File uploaded!");
}
catch (Exception ex)
{
MessageBox.Show(ex.ToString());
}
}
}
}