在一个Intranet站点上,我正在将相当多的图像从文件系统移动到MySQL中,并编写了一个小函数来提供帮助。没有错误,但插入的图像也没有错误,因此我需要帮助找出如何在不加载_FILE()的情况下执行此操作,因为它需要更改文件夹和文件权限,而我无法这样做。
请注意,有必要查询相册表,以便将相册表中的主键与图像一起插入,以便显示相册的程序知道要加载哪个图像。
function uploadFolder($path,$thumbpath) {
// Use form to submit path (keeps process from running automatically when loaded)
if (isset($_POST['create']) && isset($path)) :
global $siteDB;
// Fetch image names from existing albums
$sqlAlbum = "SELECT ID, ImageName FROM albums ORDER BY ImageName";
$sqlRow = DBConnect($sqlAlbum, "Multiple", $siteDB, "assoc");
// Build queries to insert all images to table
foreach ($sqlRow as $row) :
$filename = basename($row['ImageName']);
$albumID = $row['ID'];
$pathname = $path.$filename;
$sqlUpload = "INSERT INTO images (`ImageName`,`AlbumID`,`ImageFull`) VALUES ('$filename', $albumID, LOAD_FILE('$pathname'))";
// Run the query for each file
DBConnect($sqlUpload,"Run", $siteDB);
endforeach;
// FOR TEST PURPOSES ONLY
$_SESSION['testSQL'] = $sqlUpload;
endif;
}
它被称为:
if (isset($_POST)) :
$path = (isset($_POST['path'])) ? $_POST['path'] : "";
uploadFolder($path,"thumbnails");
endif;
图片表中没有太多内容,但这里是供参考的:
CREATE TABLE IF NOT EXISTS `images` (
`ID` int unsigned NOT NULL AUTO_INCREMENT,
`ImageName` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL,
`AlbumID` int unsigned DEFAULT NULL,
`ImageFull` blob,
`ImageThumb` blob,
PRIMARY KEY (`ID`)
) ENGINE=InnoDB AUTO_INCREMENT=228 DEFAULT CHARSET=utf8;
LOAD_FILE问题不谈,我有两种方法可以做到这一点。一种方法是读取所有文件,并通过查询将它们插入到相册表中。如上所述,另一个方法是通过查询从相册表中获取文件列表,然后从文件系统中找到并插入这些图像。做后者(理论上)可以防止它插入不应该在相册中的流浪照片。
虽然我没有在这里展示它,因为我在发布问题后意识到了这一点,但做后一步也可以让我从albums表中抓取描述列,这样我就可以分辨出哪个图像是哪个图像。
很难确定,因为您使用的是某种数据库包装器,带有一些奇怪的参数约定。通常情况下,您不会使用LOAD_FILE,而是使用php将文件读入变量,并使用mysql客户端api保存每一行。
LOAD_FILE可以工作,但它必须是文件的确切路径,并且有效的网络服务器用户(网络服务器正在运行的用户)必须拥有您试图从中读取的目录的权限。
假设这是真的,这样的事情应该会起作用:
foreach ($sqlRow as $row) :
$filename = basename($row['ImageName']);
$albumID = $row['ID'];
$pathname = $path.$filename;
$thumbPathname = $path . $thumbpath . DIRECTORY_SEPARATOR . $filename
$sqlUpload = "INSERT INTO images (`ImageName`,`AlbumID`,`ImageFull`,`ImageThumb`) VALUES ('$filename', $albumID, LOAD_FILE('$pathname'), LOAD_FILE('$thumbPathname'));\n";
// Run the query for each file
DBConnect($sqlUpload,"Run", $siteDB);
endforeach;
此代码假定缩略图目录是路径目录的子目录。路径目录需要用尾随斜杠输入。
潜在问题:
DBConnect()
函数出错,您将如何知道?好的
/somepath/to/directory/
不会管用的
/somepath/to/directory
问题内容: 我需要将几个数组合并为一个数组。描述我要寻找的内容的最好方法是将阵列“交织”为单个阵列。 例如,从数组#1中取出第一项,然后追加到最终数组中。从数组2获取项目1,然后追加到最终数组。从数组#1获得第二项并追加…等。 最终的数组如下所示: array#1.element#1 array#2.element#1。。。 “踢球者”是各个阵列可以具有各种长度。 是否有更好的数据结构要使用? 问
你好,我想上传多张图片到firebase。目前我可以上传1张图片。尽管如此,我还是决定将所有内容作为HTML,比如标题、描述和图像,放在一个webview中,并从那里显示出来。目前,这项工作还不错,我在firebase中有一个字符串,包含所有这些内容: 不过,正如您所见,这只是本地存储的工作形式。如何下载这些图像并用正确的firebase图像URL替换图像src。
我正在寻找帮助开发(或一个库),可以让我合并在一起的多个图像到一个ImageView。 我的应用程序将用户之间的交互组合在一起,而不是单独地显示它们,因此我希望合并它们的所有化身,这样一个适配器单元格就可视化了一个“组”。 Facebook.com的聊天就是一个很好的例子: 我的问题是,我如何在Android/Java中提供这个功能?据推测,它的图像数量可能介于1到4之间。请告诉我您能给出的任何建
问题内容: 可以做这样的事情吗? 我正在使用RESTEasy。 问题答案: 是的,您可以这样做,尽管您将必须重命名方法,以使它们的签名不同。 更新: 检查Dieter Cailliau的答案, 可能是您想要的… 您可以在其中检查JSR-311的API及其参考实现,名称为“ jersey”: JSR311 API 泽西岛
问题内容: 我正在 使用Express Framework 在 Node.js上 编写CMS 。在我的CMS上,我有几个用于用户,页面等的模块。 我希望每个模块的文件都放在 单独的文件夹中 , 包括视图文件 。有人知道我该怎么做到吗? 我将 swig 用作模板引擎,但如果有帮助,可以将其替换为其他东西。 问题答案: 最后更新 自Express 4.10起,框架支持多视图文件夹功能。 只需将一系列位
问题内容: 我正在尝试使用Visual Studio Code,到目前为止,它看起来很棒(轻巧,快速等)。 我正在尝试运行一个使用虚拟环境的Python应用程序,但是还使用了不在我的虚拟环境的站点包中的库。 我知道在中,我可以指定一个设置,该设置已经完成并且指向虚拟环境。 我也知道我可以向添加其他路径,到目前为止,我正在添加外部库。问题是,当我调试时,它失败了,因为没有找到中指定的库。 为此必须使