0

ディスクからファイルをアップロードし、そのファイルを varbinary db 列に挿入しようとしています。

バイナリファイルを挿入する方法がわかりません。

WPF アプリケーションで C# と Linq to Sql を使用しています。

これが私がこれまでに試したことです!提案やアドバイスをいただければ幸いです。

private void UploadFile()
        {
            DatabaseData.DataClassesDataContext context = new DatabaseData.DataClassesDataContext();
            {
            OpenFileDialog dlgOpen = new OpenFileDialog();
            dlgOpen.Title = "Select file";

            FileData fd = new FileData();
            if (dlgOpen.ShowDialog() ?? false)
            {
                FileStream inStream = File.OpenRead(dlgOpen.FileName);
                //FileStream outStream = File.OpenWrite(dlgOpen.FileName + ".xlsx");
                int b;

                while ((b = inStream.ReadByte()) > -1)
                    // outStream.WriteByte((byte)b);


                    fd.FileId = Guid.NewGuid();
                    //fd.DataFile = inStream;//DataFile is the Varbinary column in the db
                    fd.Title = dlgOpen.FileName;
                    fd.FileExtension = txtExtension.text;

                    context.FileDatas.InsertOnSubmit(fd);
                    context.SubmitChanges();

                    //outStream.Flush();
                    //outStream.Close();
                    inStream.Close();
            }
            }
        }
4

4 に答える 4

1

コンパイル エラーを修正するには、whileステートメントを削除します。まで使用できない新しい FileData() を作成しようとしていますb > -1

その後、コードが機能するかどうかはわかりませんが、この 1 つのコンパイル エラーが修正されます。

private void UploadFile()
{
    DatabaseData.DataClassesDataContext context = new DatabaseData.DataClassesDataContext();
    {
        OpenFileDialog dlgOpen = new OpenFileDialog();
        dlgOpen.Title = "Select file";

        if (dlgOpen.ShowDialog() ?? false)
        {
            FileStream inStream = File.OpenRead(dlgOpen.FileName);

            FileData fd = new FileData();
            fd.FileId = Guid.NewGuid();
            fd.DataFile = inStream;
            fd.Title = dlgOpen.FileName;
            fd.FileExtension = txtExtension.text;

            context.FileDatas.InsertOnSubmit(fd);
            context.SubmitChanges();

            inStream.Close();
        }
    }
}
于 2013-06-07T03:49:04.323 に答える
1

これがうまくいくかどうかはわかりませんが、これを試してください

 if (dlgOpen.ShowDialog() ?? false)
                    {
                        byte[] bytes = System.IO.File.ReadAllBytes(dlgOpen.FileName);

                            fd.FileId = Guid.NewGuid();
                            fd.DataFile = bytes;
                            fd.Title = dlgOpen.FileName;                   
                            context.FileDatas.InsertOnSubmit(fd);
                            context.SubmitChanges();
于 2013-06-07T04:05:51.180 に答える
-1

C# でのファイル操作 (私のブログ リンクが役立ちます)

于 2013-06-07T04:51:05.530 に答える