Я хочу сохранить файлы в папке сервера, а не непосредственно в базе данных - PullRequest
0 голосов
/ 30 марта 2019

Привет, я новичок в программировании и создании приложения на c # (приложение Windows), которое хочет сохранить файл pdf или word в папке сервера, а не непосредственно в базе данных. Я вижу много решений, но ни одно из моих требований.

1, я хочу сохранить файл в папке. 2, я хочу показать сохраненный файл в datagridview. 3, я хочу скачать и удалить файлы из datagridview сохраненных файлов. 4, я хочу сохранить файл в папке частиц определить в коде.

У меня есть код ниже.

SqlDataAdapter objAdapter = new SqlDataAdapter(strQuery_AllAttachments_AllFields, objConn);
        objAdapter.MissingSchemaAction = MissingSchemaAction.AddWithKey;
        SqlCommandBuilder objCmdBuilder = new SqlCommandBuilder(objAdapter);
        DataTable objTable = new DataTable();
        FileStream objFileStream = new FileStream(strFile, FileMode.Open, FileAccess.Read);
        int intLength = Convert.ToInt32(objFileStream.Length);
        byte[] objData;

        objData = new byte[intLength];
        DataRow objRow;
        string[] strPath = strFile.Split(Convert.ToChar(@"\"));
        objAdapter.Fill(objTable);

        objFileStream.Read(objData, 0, intLength);
        objFileStream.Close();

        objRow = objTable.NewRow();
        objRow["FileName"] = strPath[strPath.Length - 1]; //clip the full path - we just want last part!
        objRow["FileSize"] = intLength / 1024;  // KB instead of bytes
        objRow["CustData"] = objData;  //our file
        objRow["CustName"] = comboBox1.Text.ToString();
        objRow["CaseName"] = textBox1.Text.ToString();
        objRow["Remarks"] = textBox3.Text.ToString();
        objRow["Date"] = dateTimePicker1.Value.ToShortDateString();
        objTable.Rows.Add(objRow); //add our new record
        objAdapter.Update(objTable);

    }

    private void btnDownloadFile_Click(object sender, EventArgs e)
    {
        SaveAttachment(sfdMain, gridViewMain);
        FillDataGrid(gridViewMain, strQuery_AllAttachments);  // refresh grid
    }

    private void SaveAttachment(SaveFileDialog objSfd, DataGridView objGrid)
    {
        string strId = objGrid.SelectedRows[0].Cells["ID"].Value.ToString();
        if (!string.IsNullOrEmpty(strId))
        {
            SqlCommand sqlCmd = new SqlCommand(strQuery_GetAttachmentById, objConn);
            sqlCmd.Parameters.AddWithValue("@attachId", strId);
            SqlDataAdapter objAdapter = new SqlDataAdapter(sqlCmd);
            DataTable objTable = new DataTable();
            DataRow objRow;
            objAdapter.MissingSchemaAction = MissingSchemaAction.AddWithKey;
            SqlCommandBuilder sqlCmdBuilder = new SqlCommandBuilder(objAdapter);
            objAdapter.Fill(objTable);
            objRow = objTable.Rows[0];
            string fileName = Convert.ToString(objGrid.SelectedRows[0].Cells["FileName"].Value.ToString());
            FileInfo fileInfo = new FileInfo(fileName);
            string fileExtension = fileInfo.Extension;
            objSfd.Filter = "Files (*" + fileExtension + ")|*" + fileExtension;
            objSfd.Title = "Save File as";
            objSfd.CheckPathExists = true;
            objSfd.FileName = fileName;

            byte[] objData;
            objData = (byte[])objRow["CustData"];


            if (objSfd.ShowDialog() != DialogResult.Cancel)
            {
                string strFileToSave = objSfd.FileName;


                FileStream objFileStream = new FileStream(strFileToSave, FileMode.Create, FileAccess.Write);
                objFileStream.Write(objData, 0, objData.Length);


                objFileStream.Close();
            }
        }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...