您可以通过AJAX提交具有文件类型输入的表单吗?我正在尝试使用jquery执行此操作但似乎无法序列化正在提交的文件。这是否被浏览器阻止作为安全问题?有办法吗?
答案 0 :(得分:3)
您可以使用HTML5的File API
来执行此操作:
http://www.html5rocks.com/tutorials/file/dndfiles/
有关使用它发布的讨论,您可以从
开始http://groups.google.com/group/play-framework/browse_thread/thread/6223a9b25b87a839/6c74eda4f7b33010
基本上,使用File API
,javascript可以从本地系统读取文件,如果浏览器支持它,那么您可以通过ajax调用以及您需要提交的任何其他内容发布该文件。< / p>
如果您需要提交多个文件,这可能是一个很好的起点:
如果你必须使用jQuery,那么你可以试试这个插件,虽然我从来没有用过它:
答案 1 :(得分:2)
我没有正确解释为什么我贬低了Scott Harwell。我被投票,因为这可以完成,我一直这样做。我的代码如下:
html标签:
<form id="inputForm1" method="POST" enctype="multipart/form-data" ACTION="">
<div id="file-attachment">
<div style="float:left;">file:</div>
<div id="file-sub" style="float:left;">
<input type="file" id="WebAccessFile" name="WebAccessFile" size="45" value="">
</div>
</div>
</form>
关键是enctype="multipart/form-data"
我的jQuery ajax语句如下:
$.ajaxFileUpload({url:'/LonApps/FoxWeb.exe/EWI/ewiprocedures?Proc=addrelease',
secureuri: false,
fileElementId:'WebAccessFile',
dataType: 'text'
});
我使用Visual FoxPro作为此函数的编码语言,因此我将发布我的VFP代码,但您可以将此代码调整为您正在使用的编码语言:
loAttachment = Request.FormFieldObject("WebAccessFile")
lcReleaseMessage = loAttachment.FileName
lcSaveFile = ""
IF loAttachment.ContentLength > 0
lcFileName = loAttachment.FileName
lcFileContent = loAttachment.Value()
lcSaveFile = "D:\Website\Publish\Depts\EWI\docs\" + lcFileName
SET SAFETY OFF
STRTOFILE(lcFileContent, lcSaveFile)
SET SAFETY ON
lcHTTPSaveFile = "/Publish/Depts/EWI/docs/" + lcFileName
ENDIF
这是接收输入值为loAttachment(lo代表Local Object)。然后,除其他外,它查找附件内容长度是否大于0,如果是,则将附件保存到本地Web目录以供以后访问。
答案 2 :(得分:0)
答案 3 :(得分:0)
技术答案是否定的,但是有一些“hacks”将您的表单发布到隐藏的iFrame,以便看起来好像是Ajax。谷歌搜索应该会产生很多例子。