OLE DB Объект поля для миграции поля изображения SQL c # - PullRequest
1 голос
/ 17 июня 2011

Я пытаюсь перенести поле объекта OLE (доступ 2003) в поле SQL 2005, теперь мне удалось заставить файл Doc работать (функция скопирована),

но не повезло с EXCEL / PDF и другими файлами.

        short sFlag = 0;
        int nIndex = 0;
        int nCount = 0;
        int nOffset = 0;
        int nImgLen = 0;
        int nReadbyte = 14400;
        string szImgType = string.Empty;


        if (bData.Length > 0)
        {
            MemoryStream memStream = new MemoryStream(bData, true);
            byte[] bArray = new byte[nReadbyte];
            nCount = memStream.Read(bArray, 0, nReadbyte);
            if (bArray[78] == (byte)0x42 && bArray[79] == (byte)0x4D) //BMP FORMAT
            {
                sFlag = 1;
                nOffset = 78;
                szImgType = "image/bmp";
            }
            else
            {
                for (nIndex = 78; nIndex < nReadbyte - 2; nIndex++)
                {
                    if (bArray[nIndex] == (byte)0xFF && bArray[nIndex + 1] == (byte)0xD8) //JPG FORMAT
                    {
                        sFlag = 2;
                        nOffset = nIndex;
                        szImgType = "image/pjpeg";
                        break;
                    }
                    else if (bArray[nIndex] == (byte)0x25 && bArray[nIndex + 1] == (byte)0x50) //PDF FORMAT
                    {
                        sFlag = 3;
                        nOffset = nIndex;
                        szImgType = "application/pdf";
                        FileType = "application/pdf";
                        break;
                    }
                    else if (bArray[nIndex] == (byte)0xD0 && bArray[nIndex + 1] == (byte)0xCF) //MSWORD FORMAT
                    {
                        sFlag = 4;
                        nOffset = nIndex;
                        szImgType = "application/msword";
                        FileType = "application/msword";
                        break;
                    }


                }
            }
            if (sFlag > 0)
            {
                nImgLen = bData.Length - nOffset;
                memStream.Position = 0;
                memStream.Write(bData, nOffset, nImgLen);
                memStream.Position = 0;
                byte[] bImgData = bData; //new byte[nImgLen];
                return bImgData;
            }
            else
            {
                return null;
            }


        }
        else {
            return null;
        }
    }

хотел бы знать о любых указателях / поисках для переноса объектов ole в поля SQL 2005.

-Prash

...