gpt4 book ai didi

php - Joomla 保存后设置 `file` 字段值

转载 作者:行者123 更新时间:2023-11-28 23:09:13 25 4
gpt4 key购买 nike

对于我的后端组件,我需要能够为我的项目上传图像。一切正常,我为图像添加字段:

<field
type="file"
name="category_image"
accept="image/*"
label="COM_SKYCATALOG_ITEM_CATEGORY_IMAGE_LABEL"
directory=""
preview="false"
/>

然后更新save()方法来控制上传:

$jinput = JFactory::getApplication()->input;
$files = $jinput->files->get('jform');

$fileinfo =pathinfo($files['category_image']['name']);

$ext = $fileinfo['extension'];
$filename = time().".$ext";

$tmp_file = $files['category_image']['tmp_name'];

$dest = "../media/com_xxxxx/upload/".$filename;

if (JFile::upload($tmp_file, $dest)) {
// successed :)
} else {
// failed :(
echo "FAAAIL!!!";
die();
}

当我选择文件并保存项目时,文件上传到文件夹,但类别图像字段为空。 mysql 表中的 category_image 字段也没有更新,但是当我使用 media 字段类型时它工作正常。

这里可能有什么问题?

我不喜欢媒体管理器使用起来太慢。

最佳答案

我设法解决了这个问题。出于安全原因,您不能使用 file 类型设置 input 标记的值。我的意思是您可以设置 value 属性,但字段将显示为空白。

所以我只是像这样创建一个自定义字段:

class JFormFieldSkyupload extends JFormField
{
/**
* The field type.
*
* @var string
*/
protected $type = 'Skyupload';

/**
* Method to get a list of options for a list input.
*
* @return array An array of JHtml options.
*/
public function getInput() {
return '<div class="filename_labe">'.$this->value.'</div><input name="'.$this->name.'" id="'.$this->id.'" accept="image/*" aria-invalid="false" type="file" value="'.$this->value.'">';
// code that returns HTML that will be shown as the form field
}

}

我还对上传代码进行了一些更改,因此即使没有选择新文件,我也可以无误地保存表单:

if ($files['category_image']['name']!="")
{
$fileinfo =pathinfo($files['category_image']['name']);

$ext = JFile::getExt($files['category_image']['name']);
$filename = time().".$ext";

$tmp_file = $files['category_image']['tmp_name'];

$dest = "../media/com_skycatalog/upload/".$filename;

if (JFile::upload($tmp_file, $dest)) {
// successed :)
} else {
// failed :(
echo "FAAAIL!!!";
die();
}

$data = JRequest::getVar( 'jform', null, 'post', 'array' );
$data['category_image'] = strtolower( $filename );
JRequest::setVar('jform', $data );

现在只有当我上传新文件时,它才会更新数据库中的文件名。

关于php - Joomla 保存后设置 `file` 字段值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46423651/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com