【发布时间】:2014-11-21 22:43:04
【问题描述】:
我正在尝试在 Joomla MVC 框架中使用 AJAX jquery 上传图像。
下面是default.php,它添加了下面的javascript脚本代码
$('#icon-submit').on('click',(function(e) {
$.ajax({
url: "index.php?option=com_jsmdownload&task=imageUpload",
type: "POST",
data: new FormData(this),
contentType: false,
cache: false,
processData:false,
success: function(data){
alert(data);
},
error: function(){
}
});
}));
下面是 HTML 代码,其中包含一个简单的文件框和一个按钮
<form action="<?php echo JRoute::_('index.php'); ?>" method="POST" name="adminForm" id="adminForm" enctype="multipart/form-data">
<input type="file" id="and_36x36" name="and_36x36">
<input id='icon-submit' type='button' value='Next ->' />
</form>
以下是用于 imageUpload 任务的 controller.php 中的 PHP 代码。
function imageUpload(){
JFactory::getDocument()->setMimeEncoding( 'application/json' );
print_r($_FILES);
JFactory::getApplication()->close();
}
一旦我选择文件并单击按钮,调用的 ajax 函数和 PHP 函数也被调用,但里面的表单数据不可用。
print_r 命令总是打印一个空数组。我不知道我做错了什么。我想获取选定的文件并将它们上传到服务器并返回给浏览器。
我参考了多个帖子,但无法找到答案。有人可以请教。
更新 1
如果我将一个独立的 PHP 文件设置为 URL,那么它就可以工作。例如
url: "http://localhost/test/indextest.php",
但如果我用控制器设置 Joomla 组件路径,它就不起作用了。
【问题讨论】:
-
这个组件
com_jsmdownload是否需要用户登录才能上传图片?还是会让任何人? -
为什么不使用内置包上传呢?上传图片很危险,您需要内置身份验证检查、授权检查、对名称的广泛检查以及图片本身是否包含恶意代码。在推出您自己的网站之前,我会仔细阅读 OWASP 网站。
-
@cppl - 是的,此组件仅适用于注册用户。 Joomla 是否有内置包可以上传图片?
-
我设法让它工作。参考链接joomla.stackexchange.com/questions/5342/…
-
字段类型媒体会给你一个上传者。