这是我的BrandController.php https://gist.github.com/a958926883b9e7cc68f7#file-brandcontroller-php-L53
我已经浏览了我的自定义模块的所有文件,并将它们与自定义模块制造商提供的文件进行了比较,我找不到太多差异。
答案 0 :(得分:2)
您是否尝试上传多个文件?如果您使用多个具有相同名称的fileupload元素,您将获得一系列项目。
因此,当调用以下行时,
//this way the name is saved in DB
$data['filename'] = $_FILES['filename']['name'];
它将具有值
["name"]=>array(2) {
[0]=>string(9)"file0.txt"
[1]=>string(9)"file1.txt"
}
你需要更新代码以循环遍历每个$ _FILES ['filename'] ['name']并分别上传和保存文件。
答案 1 :(得分:2)
您可能在不知不觉中上传了多个文件。如果您不是您的意图,可以在HTML中检查并检查标记的名称属性。它必须不是一个数组(如此)。
<input type="file" name="my_files[]" />
如果您只在数据库中看到Array(),则表示您确实正在上传多个文件。您可以使用循环处理它们。
如果您确定要上传1张图片,可以按照@ Palanikumar的建议操作。使用print_r()并显示$ _FILES并将其粘贴到此处。如果您不想使用它,可以使用
json_encode($the-data-you-are-going-to-insert-to-the-database);
如果你不知道把print_r()函数放在哪里,你可以把它放在这个文件的第56行之后。
https://gist.github.com/desbest/a958926883b9e7cc68f7#file-brandcontroller-php-L53
if(isset($_FILES['filename']['name']) && $_FILES['filename']['name'] != '') {
print_r($_FILES);
die;
如果在ajax函数内调用saveAction(),则需要记录ajax响应。假设你正在使用jquery ..
$ajaxResponse = $.POST({...});
console.log($ajaxResponse.responseText);
然后,您可以在浏览器的控制台中查看它。如果没有显示任何内容,您可以使用非异步请求
$ajaxResponse = $.POST({
// your options,
// your another option,
async: FALSE
});
答案 2 :(得分:1)
通常文件上传将以数组格式返回。这样每个上传的文件都会有名称,类型,大小,临时名称,错误等信息。您可以使用打印功能( print_r($ _ FILES))获取文件信息。因此,如果您想要显示文件的名称,您必须使用类似 $ _ FILES ['filename'] ['name']
使用打印功能和调试工具,然后使用循环保存文件信息。
有关详细信息,请查看here。
答案 3 :(得分:0)
您没有设置表单的enctype,因此永远不会发送图像。将代码更新为
$form = new Varien_Data_Form(array( 'enctype' => 'multipart/form-data'));