我有一个包含两列的表:ID,FILE; FILE列有BLOB类型; 我想将完整文件存储在数据库中而不是文件的内容中。 我想稍后以file_name.txt
的形式下载该文件这是我尝试的方法,但在插入后,FILE为NULL;
query.exec("INSERT INTO test(ID, FILE) VALUES(1, LOAD_FILE('/home/nemeth/Documents/list.txt'));
答案 0 :(得分:0)
根据
MySQL documentation on LOAD_FILE(),该文件必须满足一些要加载的条件。不仅是本地的,还有权限和东西。
LOAD_FILE(FILE_NAME)
读取文件并以字符串形式返回文件内容。要用这个 功能,文件必须位于服务器主机上,您必须 指定文件的完整路径名,您必须具有FILE 特权。该文件必须是所有人都可读的,其大小必须小于 max_allowed_packet个字节。如果secure_file_priv系统变量是 设置为非空目录名称,要加载的文件必须是 位于该目录中。
如果文件不存在或因为其中一个而无法读取 如果不满足上述条件,则该函数返回NULL。
character_set_filesystem系统变量控制解释 以文字字符串形式提供的文件名。
您是否尝试过搜索一下?... Lookie here :p
答案 1 :(得分:0)
我无法弄清楚问题是什么,所以我解决了不同的问题。 我已将文件读入QByteArray并将数组插入数据库。
QByteArray byteArray = file.readAll();
QSqlQuery query;
query.prepare("INSERT INTO TEST_TABLE(ID, FILE) VALUES (1,?)");
query.addBindValue(byteArray);
query.exec();