1

我对 sugarcrm 和 php 也很陌生。我想创建一个自定义模块以将文件作为 blob 上传到 Sugarcrm 数据库。到目前为止,我已经使用模块构建器创建了一个自定义模块。它是一种文件类型,因此它允许上传文件,但只有文件名保存在数据库中。我想将文件内容保存为 blob。有没有办法做到这一点。请告诉我

提前致谢

4

1 回答 1

1

我会尽力提供帮助,但我需要更多关于您要上传的内容的信息。它是图像文件还是文档?两者都有内置的处理程序,因此您可能会根据需要采取艰难的方式。

如果您正在上传图像,则有一个字段类型可以处理上传图像并将它们存储在缓存区域(这是默认存储位置)。

如果您需要上传文档,大多数现有模块中都内置了默认处理程序(联系人、潜在客户和帐户都有它)。我建议在该代码中窥探,因为大部分艰苦的工作很可能会完成。

+++ 好的,我没有意识到你只是想只存储在 blob 中。仅供参考,不建议将此数据存储在标准 _cstm 表中,因为每次调用该特定模块时,bean 类都会尝试将这些数据加载到对象中,这将消耗大量资源关于服务器资源。您将希望以标准的 3NF 方式分隔表格。

话虽如此,您将需要创建一个二进制转换类/方法(快速搜索以查看一些预制的)。假设您使用正确的字段类型(文件,并注意一个文本字段),您将需要为保存操作创建一个新的处理程序文件,将其设置为入口点。

该文件应类似于:

<?php
if(!defined('sugarEntry') || !sugarEntry) die('Not A Valid Entry Point');

require_once('include/formbase.php');
require_once('modules/[MODULE TYPE]/config.php');
require_once('include/SugarFields/SugarFieldHandler.php');

$focus = new [MODULE TYPE]();
$focus = populateFromPost('', $focus);

if(!$focus->ACLAccess('Save')){
    ACLController::displayNoAccess(true);
    sugar_cleanup(true);
}

//SOME CODE TO CONVERT TO BINARY AND THEN STORE VALUE INTO FIELD NAME USING
// $focus->[fieldName] = outputFromBinaryConversion($_POST['theFileField']);
// That would store the blob into the existing _cstm table
// --OR, you would get the id of the saved module using $return_id = $focus->id;
// and use the id to link to the blob stored in another (unsupported) table.


$focus->save();

我希望这能澄清你的方向,但我真的建议你考虑使用现有的文档处理类,因为它会更干净、更快地实现。

于 2012-08-06T14:16:00.767 回答