我想知道是否可以通过ajax和php上传二进制文件,并有一个下载它的链接。我想避免刷新整个页面,就像使用标准的html表单一样。到目前为止,我一直在使用表单来获取信息,例如收音机和文本框,并使用javascript来覆盖默认行为。上传文件是否类似?
答案 0 :(得分:13)
无法通过Javascript提交文件。
您的选择是:
答案 1 :(得分:1)
虽然您无法通过AJAX上传文件,但您可以在弹出窗口中放置文件控件,然后在关闭时更新弹出弹出窗口的页面。
我不太清楚如何更新产生弹出窗口的页面,但我已经在ANGEL学习管理套件中看到了它。
答案 2 :(得分:1)
在表单上有一个IFrame(display:none),并将表单的目标设置为iframe。
我的表单如下:
<iframe id="upload_target" name="upload_target" src="" style="width:0px;height:0px;border:0px solid #fff;"></iframe>
<form enctype="multipart/form-data" name="frmXMLUpload" target="upload_target" action="scripts/uploadXML.php" method="POST" onSubmit="return checkExtension(fXMLFile.value, 'xml')">
<!--only allow up to 30k of data to be uploaded-->
<input type="hidden" name="MAX_FILE_SIZE" value="30000" />
<input name="fXMLFile" id="fXMLFile" type="file" accept="text/xml" size="50" />
<p><input type="submit" value="Upload" /></p>
</form>
处理你在IFRAME中的回应。基本上这不是AJAX,但谁希望JavaScript能够访问本地计算机上的文件?它的方式很好。
答案 3 :(得分:0)
通常不可能仅在AJAX / Javascript中执行此操作。
看看:
http://www.codeplex.com/SLFileUpload/
了解在silverlight应用程序中执行此操作的方法。
或:
http://www.element-it.com/Examples/MultiPowUpload/SimpleUpload.html
在闪光灯中。
答案 4 :(得分:0)
正如John Gietzen所说,你不能直接通过AJAX(即通过AJAX发送实际数据)来做到这一点。你可以做什么,将你的表单提交给一个不可见的iframe,然后使用AJAX向服务器询问URL。这将保留基本的用户体验 - 不刷新页面。
答案 5 :(得分:0)
答案 6 :(得分:0)
看看这个例子,我的插件比phpLetter的插件好一点,虽然phpLetter可能有更好的PHP方面的例子。
http://www.fyneworks.com/jquery/multiple-file-upload/#tab-Examples
答案 7 :(得分:0)
您可能还想查看SwfUploader,它使用Flash执行文件上传,显示进度条,无需刷新页面。可以看到示范here。