这看起来像一大堆,但它实际上是一个非常集中的问题。这看起来比它更大,因为我提供了背景以及到目前为止我能够解决的问题。
让我从更精确的术语开始:"使用ASP.NET网页,我该如何:(a)" attach"使用Formview将已保存的PDF文件保存到数据库表,以及(b)允许用户在Gridview中选择数据库表行时查看保存的PDF文件?"
虽然我可以轻松存储PDF文件的路径和文件名,但如果重命名,移动或删除PDF文件,则数据库记录现在具有断开的链接。我的客户要求我"附上"实际的PDF文件到数据库记录,以防止链接断开。
这解释了原因:因为我的客户要求它。现在问题是如何解决问题。
以下是我在研究中所做的工作:
我在绘制大空白的地方是equatiion的ASP.NET方面。这是我希望建立的系统。只要他们按照这些方针工作,我就不会受到细节的限制。
这种方法可行吗?任何进一步研究的方向将不胜感激。谢谢你的帮助。
代码块#1:这是SQL数据库表的定义。
USE [IncidentReport_v3]
GO
/****** Object: Table [dbo].[Scanned_PDFs] Script Date: 1/13/2015 11:56:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
SET ANSI_PADDING ON
GO
CREATE TABLE [dbo].[Scanned_PDFs](
[ID] [int] IDENTITY(1,1) NOT NULL,
[DateEntered] [date] NOT NULL,
[Scanned_PDF_File] [varbinary](max) NOT NULL,
CONSTRAINT [PK_Scanned_PDFs] PRIMARY KEY CLUSTERED ([ID] ASC) WITH (
PAD_INDEX = OFF,
STATISTICS_NORECOMPUTE = OFF,
IGNORE_DUP_KEY = OFF,
ALLOW_ROW_LOCKS = ON,
ALLOW_PAGE_LOCKS = ON
) ON [PRIMARY]
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
GO
SET ANSI_PADDING OFF
GO
代码块#2:这是我用来测试插入带有PDF文件的行的能力的T-Sql脚本。如果我手动输入PDF文件名和路径,它可以很好地作为概念证明,但我需要将该文件名设置为用户提供的变量。我设想使用它作为存储过程 - 或者我可以在客户端使用此代码?还不确定。
USE IncidentReport_v3;
GO
DECLARE @pdf AS VARBINARY(max)
SELECT @pdf = cast(bulkcolumn AS VARBINARY(max))
FROM openrowset(BULK '\\wales\e$\test\test.pdf', SINGLE_BLOB) AS x
INSERT INTO dbo.Scanned_PDFs (
DateEntered,
Scanned_PDF_File
)
SELECT cast('1/12/2015' AS DATE),
@pdf;
GO
答案 0 :(得分:0)
在访问数据层之前,您需要convert the PDF to a byte array。 [Scanned_PDF_File]被设置为结果。您可以parse the file name或从其他值中获取它。
This link here,可能会为您提供所需的一切。