2

Here is my BrandController.php https://gist.github.com/a958926883b9e7cc68f7#file-brandcontroller-php-L53

I've gone through all my files of my custom module, and compared them to the one given from the custom module maker, and I couldn't find much differences.

4

4 回答 4

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
});
于 2013-02-23T05:17:31.940 回答
2

您是否尝试上传多个文件?如果您使用多个具有相同名称的文件上传元素,您将获得一个项目数组。

因此,当调用以下行时,

//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'] 并分别上传和保存文件。

于 2012-12-27T23:29:38.490 回答
1

通常文件上传会以数组格式返回。这样每个上传的文件都会有名称、类型、大小、临时名称、错误等信息。您可以使用打印功能(print_r($_FILES))获取文件信息。所以如果你想显示文件的名称,你必须使用类似这样的东西$_FILES['filename']['name']

使用打印功能和调试工具,然后使用循环保存文件信息。

欲了解更多信息,请查看此处

于 2013-02-19T11:58:16.350 回答
0

您没有设置表单的 enctype,因此永远不会发送图像。将代码更新为

$form = new Varien_Data_Form(array( 'enctype' => 'multipart/form-data'));
于 2013-03-05T10:55:30.950 回答