我有一个脚本通过url请求获取原始二进制图像数据。然后它获取数据并将其放入mysql。
非常简单吧?好吧,我正在插入大约8,000个体面大小的600x400 jpegs,并且由于一些奇怪的原因,一些图像被切断了。也许我的脚本中迭代遍历每个需要获取的图像的部分会很快?
当我直接向URL请求时,我可以看到所有原始图像数据,但在我的结尾,数据会被切断。
任何想法为什么?
答案 0 :(得分:1)
链中的某些东西是否将二进制数据视为字符串,特别是C样式的以null结尾的字符串?这可能导致它在第一个空字节('\0'
)处被切断。
答案 1 :(得分:0)
您是否尝试过简单地调用您的脚本来提取二进制图像并将其转储出来。如果您正确地看到图像,那么它不是拉动部分,可能与插入有关。
答案 2 :(得分:0)
您是否正确设置了标题?
即:
header('Content-Length: '.strlen($imagedata));
header('Content-Type: image/png');
...
答案 3 :(得分:0)
字符串数据类型肯定不是在数据库中存储图像的最佳选择。
事实上,我已经看到了一些建议,图像应该放在文件系统中的某个文件夹中,而DB只包含地址/文件路径。
This 是指向插入图片的页面的链接。
它包含有关文件路径的建议,如果图像必须进入数据库, blob 数据类型会更好。
如果它是一个blob,那么将其视为字符串将不起作用。
答案 4 :(得分:0)
如果您对同一个网址重复请求,图片最终会加载吗?
如果是这样,则指向网络问题。你的kernal(假设linux)启用了大数据包支持,这对许多Windows客户端无法正常工作。我已经看到了从linux机器提供的大型(1 + MB)javascript库的类似问题。