Exemple #1
0
        public Stream GetPhoto(string photoId)
        {
            var result = new MemoryStream();
            string filePath = null, contentType = "image/jpeg";
            byte[] txContext = null;

            using (var connection = new SqlConnection(
                ConfigurationManager.ConnectionStrings["PhotosDB"].ConnectionString))
            {
                connection.Open();
                using (var transaction = connection.BeginTransaction())
                {
                    using (var cmd = new SqlCommand("GetPhoto", connection, transaction))
                    {
                        cmd.CommandType = System.Data.CommandType.StoredProcedure;
                        cmd.Parameters.Add("@photoId", SqlDbType.Int).Value = photoId;

                        using (var sdr = cmd.ExecuteReader())
                        {
                            if (sdr.Read())
                            {
                                filePath = sdr.GetValue<string>("PathName", String.Empty);
                                contentType = sdr.GetValue<string>("ContentType", "image/jpeg");
                                txContext = (byte[])sdr["txContext"];
                            }
                        }
                    }

                    if (!String.IsNullOrWhiteSpace(filePath))
                    {
                        using (var sqlStream = new SqlFileStream(filePath, txContext, FileAccess.Read))
                        {
                            sqlStream.CopyTo(result);
                            result.Position = 0;
                        }
                    }

                    transaction.Commit();
                }
            }

            WebOperationContext.Current.OutgoingResponse.ContentType = contentType;
            return result;
        }
Exemple #2
0
        private static Image LoadDocImage(string filePath, byte[] txnToken, string imageType)
        {
            Image docImage = null;
            Bitmap bmap;

            using (SqlFileStream sfs = new SqlFileStream(filePath, txnToken, FileAccess.Read))
            {
                if (imageType.Equals("TIF"))
                    docImage = Image.FromStream(sfs);
                else //if (imageType.Equals("PDF"))
                {
                    //MemoryStream memStream = new MemoryStream();
                    //storeStream.SetLength(sfs.Length);
                    //sfs.CopyTo(memStream);
                    //docImage = Image.FromStream(memStream, false, false);

                    //System.Drawing.ImageConverter converter = new System.Drawing.ImageConverter();
                    //byte[] m_Bytes = ReadToEnd(memStream);
                    //docImage = (Image)converter.ConvertFrom(m_Bytes);

                    FileStream fstream = new FileStream(TEMP_FILENAME, FileMode.Create);
                    sfs.CopyTo(fstream, 4096);

                    //docImage = Image.FromFile(TEMP_FILENAME);
                    docImage = Image.FromStream(fstream);

                    //docImage = (Image)bmap;
                    
                }
                sfs.Close();
            } 
            return docImage;
        }
Exemple #3
0
 private static void LoadDocImageIntoFile(string filePath, byte[] txnToken, string imageType)
 {
     using (SqlFileStream sfs = new SqlFileStream(filePath, txnToken, FileAccess.Read))
     {
         string fileName = TEMP_FILENAME + imageType;
         using (FileStream fstream = new FileStream(fileName, FileMode.Create))
         {
             sfs.CopyTo(fstream, 4096);
         }
         sfs.Close();
     }            
 }
        public TradeRqmtConfirmBlobDto Get(Int32 pTradeRqmtConfirmId)
        {
            const string selectTSqlCmd = @"SELECT ID, TRADE_RQMT_CONFIRM_ID, IMAGE_FILE_EXT, DOC_BLOB.PathName(), GET_FILESTREAM_TRANSACTION_CONTEXT()
                    FROM TRADE_RQMT_CONFIRM_BLOB WHERE TRADE_RQMT_CONFIRM_ID = @TRADE_RQMT_CONFIRM_ID";
            TradeRqmtConfirmBlobDto trqmtConfirmBlobResult = new TradeRqmtConfirmBlobDto();
            string serverPath;
            byte[] serverTxn;
            byte[] blobByteArray;
            using (TransactionScope ts = new TransactionScope())
            {
                using (SqlConnection conn = new SqlConnection(sqlConnStr))
                {
                    conn.Open();
                    using (SqlCommand cmd = new SqlCommand(selectTSqlCmd, conn))
                    {
                        cmd.Parameters.Add("@TRADE_RQMT_CONFIRM_ID", SqlDbType.Int).Value = pTradeRqmtConfirmId;
                        using (SqlDataReader dataReader = cmd.ExecuteReader())
                        {

                            if (dataReader.HasRows)
                            {
                                while (dataReader.Read())
                                {
                                    serverPath = dataReader.GetSqlString(3).Value;
                                    serverTxn = dataReader.GetSqlBinary(4).Value;
                                    using (SqlFileStream sqlFileStr = new SqlFileStream(serverPath, serverTxn, FileAccess.Read))
                                    {
                                        using (MemoryStream memStream = new MemoryStream())
                                        {
                                            sqlFileStr.CopyTo(memStream);
                                            blobByteArray = memStream.ToArray();
                                        }
                                        sqlFileStr.Close();
                                    }

                                    trqmtConfirmBlobResult.Id = DBUtils.HandleInt32IfNull(dataReader["ID"].ToString());
                                    trqmtConfirmBlobResult.TradeRqmtConfirmId = DBUtils.HandleInt32IfNull(dataReader["TRADE_RQMT_CONFIRM_ID"].ToString());
                                    trqmtConfirmBlobResult.ImageFileExt = dataReader["IMAGE_FILE_EXT"].ToString();
                                    trqmtConfirmBlobResult.DocBlob = blobByteArray;
                                }
                            }
                        }
                    }
                }
                ts.Complete();
            }
            return trqmtConfirmBlobResult;
        }
        public byte[] TestGetByteArray(int pImageId)
        {
            const string SelectTSql = @"
                SELECT
                Description, ImageType, DocImage.PathName(), GET_FILESTREAM_TRANSACTION_CONTEXT()
                FROM InboundImages
                WHERE ImageId = @ImageId";
            //Image docImage;
            string serverPath;
            byte[] serverTxn;
            byte[] returnVal;
            using (TransactionScope ts = new TransactionScope())
            {
                using (SqlConnection conn = new SqlConnection(sqlConnStr))
                {
                    conn.Open();
                    using (SqlCommand cmd = new SqlCommand(SelectTSql, conn))
                    {
                        cmd.Parameters.Add("@ImageId", SqlDbType.Int).Value = pImageId;
                        using (SqlDataReader rdr = cmd.ExecuteReader(CommandBehavior.SingleRow))
                        {
                            rdr.Read();
                            //desc = rdr.GetSqlString(0).Value;
                            //fileext = rdr.GetSqlString(1).Value;
                            serverPath = rdr.GetSqlString(2).Value;
                            serverTxn = rdr.GetSqlBinary(3).Value;
                            rdr.Close();
                        }
                    }

                    using (SqlFileStream sfs = new SqlFileStream(serverPath, serverTxn, FileAccess.Read))
                    {
                        using (MemoryStream memStream = new MemoryStream())
                        {
                            sfs.CopyTo(memStream);
                            returnVal = memStream.ToArray();
                        }
                        sfs.Close();
                    } 
                }
                ts.Complete();
            }
            return returnVal;
        }
       public void CaptureVaultedDocsBlob(VaultedDocs vaultedDoc)
       {
          string sql = String.Format("SELECT ID,DOC_BLOB.PathName(),GET_FILESTREAM_TRANSACTION_CONTEXT() FROM {0}VAULTED_DOCS_BLOB{1} WHERE ID={2}"
              , DbContext.SCHEMA_NAME, DbContext.NO_LOCK,vaultedDoc.VaultedDocsBlobId);         
            using (TransactionScope ts = new TransactionScope())
            {
                using (SqlConnection conn = new SqlConnection(_connectionString))
                {
                    conn.Open();
                    using (SqlCommand cmd = new SqlCommand(sql, conn))
                    {                    
                        using (SqlDataReader dataReader = cmd.ExecuteReader())
                        {

                            if (dataReader.HasRows)
                            {
                                while (dataReader.Read())
                                {
                                    using (SqlFileStream sqlFileStr = new SqlFileStream(dataReader.GetSqlString(1).Value, dataReader.GetSqlBinary(2).Value, FileAccess.Read))
                                    {
                                        using (MemoryStream memStream = new MemoryStream())
                                        {
                                            sqlFileStr.CopyTo(memStream);
                                            vaultedDoc.VaultedDocsBlobDocBlob = memStream.ToArray();
                                        }
                                        sqlFileStr.Close();
                                    }                                    
                                }
                            }
                        }
                    }
                }
                ts.Complete();
            }                  
       }
 private static bool TransferFile(string clientFilePath, string serverFilePath, byte[] txnToken)
 {
     if (File.Exists(clientFilePath))
     {
         File.Delete(clientFilePath);
     }
     SqlFileStream sfs = new SqlFileStream(serverFilePath, txnToken, FileAccess.Read);
     FileStream fStream = new FileStream(clientFilePath, FileMode.CreateNew);
     sfs.CopyTo(fStream, 8192);
     sfs.Close();
     fStream.Close();
     return true;
 }
        // Returns a memory stream of the file, using FILESTREAM technology
        internal MemoryStream GetFileStream(string path, out string mimeType)
        {
            string sql = String.Format(@"
                    SELECT
                        MimeType,
                        [Data].PathName(),
                        GET_FILESTREAM_TRANSACTION_CONTEXT()
                    FROM [{0}]
                    WHERE Path = @path", this.TableName);

            using (TransactionScope tx = new TransactionScope())
            using (SqlConnection con = new SqlConnection(this.ConnectionString))
            using (SqlCommand cmd = new SqlCommand(sql, con))
            {
                cmd.Parameters.AddWithValue("@path", path);

                con.Open();

                using (SqlDataReader reader = cmd.ExecuteReader())
                {
                    reader.Read();
                    mimeType = reader.GetFieldValue<string>(0);
                    string filePath = reader.GetFieldValue<string>(1);
                    byte[] txnToken = reader.GetFieldValue<byte[]>(2);
                    reader.Close();

                    using (SqlFileStream sqlFileStream = new SqlFileStream(filePath, txnToken, FileAccess.Read))
                    {
                        MemoryStream ms = new MemoryStream();
                        sqlFileStream.Seek(0, SeekOrigin.Begin);
                        sqlFileStream.CopyTo(ms);

                        tx.Complete();

                        return ms;
                    }
                }
            }
        }
Exemple #9
0
 private static byte[] ReadBytesFromSqlFileStream(string serverPath, byte[] serverTxn)
 {
     byte[] blobByteArray;
     using (var sqlFileStr = new SqlFileStream(serverPath, serverTxn, FileAccess.Read))
     {
         using (var memStream = new MemoryStream())
         {
             sqlFileStr.CopyTo(memStream);
             blobByteArray = memStream.ToArray();
         }
         sqlFileStr.Close();
     }
     return blobByteArray;
 }