Sql server 2008 ColdFusion 9和文件流
我有一个允许用户上传文件的应用程序。现在它直接上传到文件系统。我已将数据库设置为使用filestream(在SQLServer2008中)。我有一个输入字段类型为文件的表单Sql server 2008 ColdFusion 9和文件流,sql-server-2008,coldfusion,filestream,coldfusion-9,Sql Server 2008,Coldfusion,Filestream,Coldfusion 9,我有一个允许用户上传文件的应用程序。现在它直接上传到文件系统。我已将数据库设置为使用filestream(在SQLServer2008中)。我有一个输入字段类型为文件的表单 <input type="file" name="ul_path1" id="ul_path1"> 何时应该: insert into redbook_uploads '009', 'C:\users\username\file.pdf', Cast('C:\users\username\file.pdf' A
<input type="file" name="ul_path1" id="ul_path1">
何时应该:
insert into redbook_uploads '009', 'C:\users\username\file.pdf', Cast('C:\users\username\file.pdf' As varbinary(max))
我不知道如何得到实际的文件名,也不知道为什么它没有得到它 可能有正确的答案:
以下是上传文件并将其存储在数据库中的基本步骤
C:\apps\ColdFusion9\runtime\servers\coldfusion\SERVER-INF\temp\wwwroot tmp\neotmp###.tmp.
我们需要看一些代码来提供更具体的答案。但要回答你的部分问题
新上载的文件始终放置在服务器临时目录中,并提供临时文件名。在操作页面上,必须使用cffile action=upload
标记将文件从临时目录移动到所需位置
动作名称有点误导。它并没有上传任何东西。从临时路径中可以看到,该文件已上载到服务器。所有的action=upload
操作都是移动/重命名文件。它还使用文件的详细信息(如名称、文件扩展名、mime类型等)填充CFFILE
(或result
)结构。(有关更多详细信息,请参阅。)这些值可用于将文件信息保存到数据库中
<cfquery datasource=#ODSN# name="upFiles">
insert into redbook_uploads
'#session.buildno#', '#form.ul_path1#', Cast('#form.ul_path1#' As varbinary(max))
</cfquery>
<cffile action="upload"
fileField = "form.nameOfYourInputField"
destination = "c:\path\to\target\directory"
nameConflict = "makeUnique"
result="fileDetails" />
<cfdump var="#fileDetails#" label="Uploaded File Details">
无论出于何种原因,文件的路径默认为:
C:\apps\ColdFusion9\runtime\servers\coldfusion\SERVER-INF\temp\wwwroot tmp\neotmp###.tmp.
我们需要看一些代码来提供更具体的答案。但要回答你的部分问题
新上载的文件始终放置在服务器临时目录中,并提供临时文件名。在操作页面上,必须使用cffile action=upload
标记将文件从临时目录移动到所需位置
动作名称有点误导。它并没有上传任何东西。从临时路径中可以看到,该文件已上载到服务器。所有的action=upload
操作都是移动/重命名文件。它还使用文件的详细信息(如名称、文件扩展名、mime类型等)填充CFFILE
(或result
)结构。(有关更多详细信息,请参阅。)这些值可用于将文件信息保存到数据库中
<cfquery datasource=#ODSN# name="upFiles">
insert into redbook_uploads
'#session.buildno#', '#form.ul_path1#', Cast('#form.ul_path1#' As varbinary(max))
</cfquery>
<cffile action="upload"
fileField = "form.nameOfYourInputField"
destination = "c:\path\to\target\directory"
nameConflict = "makeUnique"
result="fileDetails" />
<cfdump var="#fileDetails#" label="Uploaded File Details">
请与我们共享相关代码…请与我们共享相关代码…好的,那么发生的情况是用户在其计算机上选择了一个文件,该文件应该是:C:\users\username\file.pdf
不应该。服务器无法访问用户的计算机,因此存储远程路径没有任何好处。您希望保存存储在服务器上的文件的路径。要做到这一点,先用cffile上传它。然后在insert
语句中使用服务器变量:serverDirectory
和serverFile
。我们试图避免将文件直接上载到系统/服务器。这就是我们尝试使用文件流的原因。但我想我可以上传它,然后使用服务器变量将其放入数据库,然后删除文件。这看起来像是额外的步骤。(编辑)没有办法通过web应用程序afaik实现这一点。出于安全原因,服务器不能仅访问用户计算机上的文件。用户必须明确选择自己发送文件,即上传文件。这意味着一个临时文件。但是有一行清理并没有什么大不了的:)好的,所以发生的事情是用户在计算机上选择了一个文件,并且在它应该是的时候:C:\users\username\file.pdf
不应该。服务器无法访问用户的计算机,因此存储远程路径没有任何好处。您希望保存存储在服务器上的文件的路径。要做到这一点,先用cffile上传它。然后在insert
语句中使用服务器变量:serverDirectory
和serverFile
。我们试图避免将文件直接上载到系统/服务器。这就是我们尝试使用文件流的原因。但我想我可以上传它,然后使用服务器变量将其放入数据库,然后删除文件。这看起来像是额外的步骤。(编辑)没有办法通过web应用程序afaik实现这一点。出于安全原因,服务器不能仅访问用户计算机上的文件