Browser 在浏览器中显示本地文件的缩略图(使用免费技术)

Browser 在浏览器中显示本地文件的缩略图(使用免费技术),browser,local-storage,file-access,Browser,Local Storage,File Access,我正在用Postgresql开发一个数据库,通过Firefox/Ubuntu中的浏览器(php/javascript)访问。它在客户端计算机中本地运行,数据库也是本地的。有些表有一个“链接”列,用户在其中存储该记录(报告、照片、地图,甚至整个文件夹)的文件路径。现在我要求客户机复制Nautilus中的资源,并将其粘贴到所选字段中。这将粘贴文件的完整路径,然后将其存储在数据库中。到目前为止,一切顺利 我现在想要的是,当用户要求查看表中的内容时,显示文件的缩略图。我知道javascript由于安全原

我正在用Postgresql开发一个数据库,通过Firefox/Ubuntu中的浏览器(php/javascript)访问。它在客户端计算机中本地运行,数据库也是本地的。有些表有一个“链接”列,用户在其中存储该记录(报告、照片、地图,甚至整个文件夹)的文件路径。现在我要求客户机复制Nautilus中的资源,并将其粘贴到所选字段中。这将粘贴文件的完整路径,然后将其存储在数据库中。到目前为止,一切顺利


我现在想要的是,当用户要求查看表中的内容时,显示文件的缩略图。我知道javascript由于安全原因无法访问用户磁盘的内容。显示了如何在HTML5中执行类似操作,但它似乎没有文件的完整路径。在其他地方我读过Flash可以做到(在其他地方我读到它不能做到),但Flash不是免费的。有没有免费的技术可以让它工作?提前感谢。

有几种方法可以解决这个问题。一个选项是,服务器将图像从数据库中的路径流式传输到浏览器,例如,如果使用PHP,这看起来像:

    $size = getimagesize($fname);
    // Now that you know the mime type, include it in the header.
    header('Content-type: '.$size['mime']);
    // Read the image and send it directly to the output.
    readfile($fname);
在任何其他服务器端脚本语言中都有等效的方法

具体地说,这里有一个测试过的示例代码可以实现这一点。在服务器端:

<?php
$param = $_GET["image"];
$fname = "/Users/myuser/images/$param"; // replace with your path
$size = getimagesize($fname);
header('Content-type: '.$size['mime']);
readfile($fname);
?>

在客户端

<html>
<head></head>
<body>
<img src="http://127.0.0.1/img.php?image=test1.png" />
<img src="http://127.0.0.1/img.php?image=test2.png" />
</body>
</html>


我正在用Java进行尝试,它在applet tester中很好地显示图像,但在浏览器中没有显示(但在浏览器中显示“Hello,world!”)(我需要使用Windows Delphi数据库还是什么?好的,测试它。如果$fname=“/home/user/folder/file.png”并且我在该目录中有该文件,则:$size=getimagesize(“file://$fname”);我得到的“不支持远程主机文件访问”看起来像我的文件夹/home/user/folder/需要像这里所说的那样是“web可访问的”?如果您在PHP中这样做,并且PHP在文件所在的同一服务器上运行,那么$fname应该是文件的绝对路径(没有'file:/'前缀)。例如,如果文件为/home/myuser/images/myimage.jpg,则应使用$size=getimagesize('/home/myuser/images/myimage.jpg')和readfile('/home/myuser/images/myimage.jpg')好的,它可以打开图像。但是标题意味着我需要一个新页面来打开它。我想做的是在同一页面中打开多个图像,其中有其他元素(带菜单的侧栏、主分区中的表格等)。图像应该是主屏幕中的缩略图。但主屏幕的标题不是图像的mime文件类型。我尝试使用链接,它打开了一个新页面,但出现错误:“图像无法显示,因为它包含错误。”在该页面中,显示了完整的url,但我调用了readfile()正如您所说的,只传递文件名。为什么会这样?标题总是与图像一起发送回来-您不需要新页面来显示它们-只需使用。如果您在新页面中以这种方式查看图像,您应该能够使用img标记在同一页面中查看多个图像