不是真正的问题...只是想在某处发布,因为我无法在其他地方找到它.现在我已经拼凑了一个我认为可以分享的工作演示.这在Coldfusion和Railo CFML服务器上同样有效.
问题是,对于CFML开发人员而言,CFFILE不能使用<input type="file" multiple>...传统上如果你想上传3个文件并在后端使用CFFILE,你必须在你的调用页面上包含3个单独的文件输入.
为简单起见,这是我的解决方案.它使用Jquery $ .ajax对CFFILE进行多次调用,并将结果返回给调用页面上的div.我确定有更好的方法来做到这一点,我的代码可能是一个完整的黑客,但下面的例子工作.希望这有助于某人.
multiFileUpload.cfm
<!DOCTYPE html>
<CFPARAM Name="URL.contractID" defualt="">
<head>
<title>Multi File Upload</title>
<script>
$( document ).ready(function() {
$('#submitFrm').on("click", function(e){
e.preventDefault();
//The jquery.each() statement loops through all the files selected by user
$.each($('#multiFile')[0].files, function(i, file) {
var data = new FormData();
data.append('file-0', file);
ajaxUpload(data);
}); //end .each statement
}); //end submitFrm's click function
function ajaxUpload(data){
console.log("ajaxUpload function called");
$.ajax({url: "multiFileUploadAction.cfm",
data: data,
cache: false,
contentType: false, //this is need for this to work …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用 cfhttp 从自动下载 url 获取文件。我正在使用以下代码:
<cfhttp method="get" url="http://www.example.com/getfile" path="E:/" file="abc.csv">
Run Code Online (Sandbox Code Playgroud)
在这种情况下,我将文件类型指定为 CSV,因此我能够获取文件,但文件类型可以更改。我试图CFHTTP.MIMETYPE获取文件类型并像这样使用:
<cfhttp method="get" url="http://www.example.com/getfile">
<cffile action="write" file="E:/abc.#listLast(cfhttp.MIMETYPE,'/')#" output="#cfhttp.FileContent#">
Run Code Online (Sandbox Code Playgroud)
这适用于 CSV 和 XML 文件。但我希望它也适用于 Excel 文件。
请帮忙。提前致谢。
目前运行ColdFusion 10,但这可能是多年来一直存在的问题,也许是整个CF6/7.
作为CMS的一部分,验证的一部分是将图像上载到目录,例如
<cffile action="UPLOAD" filefield="image" destination="media/img/" nameconflict="MAKEUNIQUE" accept="image/jpeg,image/gif,image/pjpeg" mode="644">
Run Code Online (Sandbox Code Playgroud)
然后通过检查尺寸的脚本读取它们.
如果一切都通过,则进程脚本将其移动到其目标目录,例如
<cffile action="MOVE" source="media/img/imagename" destination="media/img/#hexdir#/imagename" mode="644">
Run Code Online (Sandbox Code Playgroud)
如果失败则应删除.
<cffile action="DELETE" file="media/img/imagename">
Run Code Online (Sandbox Code Playgroud)
每隔一段时间/ img /目录变为只读,就无法写入该文件.但我无法确定原因.
有没有我不知道的错误?有任何想法吗?
谢谢
附加信息
我考虑过使用CFDirectory来更改脚本中的文件夹权限,因此如果再次发生,可以快速解决.
我发现了两个问题
在UNIX和Linux上,cfdirectory action ="list"不会返回mode列中的任何信息.
也
使用权限为644,777,111的重命名文件夹似乎不会影响我可以在FileZilla中查看的文件夹的权限.
这是否意味着CF首先无法更改文件夹权限?
我有一个小的表格,我想将文件上传到CF服务器。过去,我可以通过传统的操作页面提交CFFORM来完成此工作。但是我想使用AJAX上传文件。
我在处理页面上收到如下错误:cffile action =“ upload”要求表单使用enctype =“ multipart / form-data”,即使我已经这样定义了表单。
从google'ng到周围,我认为可能是因为Cffile要求filefield属性,但是由于没有表单对象传递给coldfusion。可能类似的问题。我不太喜欢这个解决方案。
无论如何,我可以解决这个错误吗?
这是我的AJAX:
<!---Script to upload file link --->
<cfoutput>
<script>
$(function(){
//Add a new note to a link
$("##upload-file").submit(function(event){
// prevent native form submission here
event.preventDefault();
$.ajax({
type: "POST",
data: $('##upload-file').serialize(),
url: "actionpages/file_upload_action.cfm",
beforeSend: function(){
$('.loader').show();
},
complete: function(){
$('.loader').hide(3000);
},
success: function() {
PopulateFileUploadDiv();
$("##upload").val('');
$("##response").append( "File successfully Uploaded." );
}
});
return false;
});
});
</script>
</cfoutput>
Run Code Online (Sandbox Code Playgroud)
我的表格:
<form method="post" name="upload-file" id="upload-file" enctype="multipart/form-data">
<input tabindex="0" size="50" …Run Code Online (Sandbox Code Playgroud) 我一直允许用户通过在线表单上传文件,如下所示:
<form action="upload.htm" enctype="multipart/form-data" name="upload_form" method="post">
<input type="file" name="upfile">
<input type="submit" name="upload" value="Upload Photos">
</form>
Run Code Online (Sandbox Code Playgroud)
然后在后端,cffile 将上传文件:
<cffile action="upload" destination="#currentpath#" accept="image/jpeg, image/gif, image/png" fileField="form.upfile" nameconflict="makeunique">
Run Code Online (Sandbox Code Playgroud)
现在我想做自动化,以便图像文件不必位于用户的计算机中,而是来自网络目的地,例如http://www.sample.com/images/myimage.jpg而不是 c:/images/我的图片.jpg
我试过这个:
<cfhttp method="get" url="http://www.example.com/images/myimage.jpg" resolveurl="Yes" throwOnError="Yes">
<cfif cfhttp.mimeType eq "image/jpeg">
<cfset currentpath = expandpath('/test/')>
<cffile action="upload" destination="#currentpath#" accept="image/jpeg, image/gif, image/png" fileField="#cfhttp.fileContent#" nameconflict="makeunique">
</cfif>
Run Code Online (Sandbox Code Playgroud)
但是,它给了我一个错误:
无效的内容类型:''。文件上传操作需要表单使用 enctype="multipart/form-data"
我没有使用表单上传,但它似乎需要一个表单字段。
所以我试过这个:
<cfhttp method="get" url="http://www.example.com/images/myimage.jpg" resolveurl="Yes" throwOnError="Yes">
<cfif cfhttp.mimeType eq "image/jpeg">
<cfset currentpath = expandpath('/test/')>
<cffile action="write" output="#cfhttp.fileContent#" file="#currentpath#/someimage.jpg">
</cfif>
Run Code Online (Sandbox Code Playgroud)
这个写出一个名为 someimage.jpg 的“文件”,但输出不是一个 jpg 文件,而是一些无法识别的文件。使用 …
知道为什么CFFILE Write不支持让它独一无二但CFFile上传呢?
我正在使用CFFILE Write来处理GetHttpRequestData,并且能够支持使其独一无二将非常有用.有任何想法吗?
我有一个表单,我想提交给一个组件进行处理(CRUD行为),问题是它似乎将multipart/form-data传递给某个组件以某种方式丢失了文件位置.当它到达应该上传文件的组件部分时,我得到臭名昭着的表单字段不包含文件错误.
我不是百分之百确定为什么会发生这种情况,但如果我将表单直接提交到执行cffile操作的.cfm页面,一切都按预期工作,但如果.cfm页面执行如下操作:
<cfobject name="process_form" component="processor" />
<cfset result = process_form.upload( form ) />
Run Code Online (Sandbox Code Playgroud)
并且组件"processor"尝试进行上传,我得到表单字段不包含文件.
我的处理器看起来像:
<cfcomponent name="processor">
<cffunction name="upload" returntype="string">
<cfargument name="form_data" type="struct" />
<cffile action="upload" filefield="#arguments.form_data.file_1#" ...>
[ ... ]
</cffunction>
</cfcomponent>
Run Code Online (Sandbox Code Playgroud)
有一点需要注意的是,如果我尝试使用arguments.form_data.file_1没有#符号的变量,我会得到错误:
The form field arguments.form_data.file_1 did not contain a file.
Run Code Online (Sandbox Code Playgroud)
如果我在变量周围加上#符号,我得到:
The form field C:\JRun4\servers\cfusion\SERVER-INF\temp\cfusion-war-tmp\neotmp7350969777287007477.tmp did not contain a file.
Run Code Online (Sandbox Code Playgroud)
有关如何解决此问题的任何想法?我宁愿将所有处理操作放在一个组件中,但是现在我似乎无法做到这一点.
谢谢!将
从磁盘位置读取 PE 文件时,我需要将 RVA(取自 pdb 文件的相对虚拟地址)映射到 PE 文件(EXE)偏移量。为此,我需要将 RVA 转换为文件偏移量,以便我可以从该位置读出 GUIDS(CLSID,IID)。
问候乌斯曼
我目前正在尝试使用cfc文件中的函数上传文件.当我<cffile action="upload">在同一页面上调用时,我可以让代码工作.但是,我想学习如何从cfc文件中的函数调用它.我相信我传递给<cffile>标签属性的参数存在问题,但我不确定.
这是我的HTML表单:
<form action="confirm.cfm" method="POST" enctype="multipart/form-data">
First Name: <input type="text" name="FNAME" size="25" /> <br />
Last Name: <input type="text" name="LNAME" size="30" /> <br />
Upload Attachment File Here: <input type="file" name="fileUpload"
id="fileUpload" size="30"
onchange="PassFileName()" /> <br />
<input type="hidden" name="fileName" id="fileName" /> <br />
<input type="submit" value="submit" />
<input type="reset" name="Reset Form" />
<div id="filenamesection">
</div>
</form>
Run Code Online (Sandbox Code Playgroud)
以下是表单提交到confirm.cfm页面的代码
<cfif isDefined("Form.fileUpload")>
<cfinvoke component="FileUploadExample"
method="UploadFile"
fileToUpload="#Form.fileUpload#"
sizeMax="50"
returnvariable="FileNameReturn">
<cfelse>
<cflocation url="index.cfm">
</cfif>
<h1> Thank for filling out …Run Code Online (Sandbox Code Playgroud) 插入MS-SQL 2008数据库
<cffile action="READBINARY" file="#form.FileContents#" variable="binPDF">
<cfquery name="Uploaded" datasource="#cfbasedatasource#">
INSERT INTO UploadedFiles
(
AccountId,
Filecontent
)
VALUES
(
'#UrlAccountId#',
<cfqueryparam value='#binPDF#' cfsqltype='cf_sql_blob'>
)
</cfquery>
Run Code Online (Sandbox Code Playgroud)
=========================这是从数据库显示到浏览器:
<cfset binaryData = #cfGetfilecontentquery.Filecontent[1]#>
<cfheader name="Content-Disposition" value="inline; filename=testDocument.pdf">
<cfcontent variable="#binarydata#" type="application/pdf" reset="yes" />
Run Code Online (Sandbox Code Playgroud)
但我只能在浏览器中看到"无法加载PDF文档"
cffile ×10
coldfusion ×9
ajax ×2
cfhttp ×2
jquery ×2
c++ ×1
cfc ×1
cffunction ×1
database ×1
debugging ×1
file-upload ×1
pdf ×1
process ×1
upload ×1