Java python cgi http响应向内容添加额外字节
我一直在使用PythonCGI脚本从数据库获取文件,一切正常,但出于某种原因,文件中似乎添加了一个额外的字节。在数据库上,大小为10265字节,但在http响应中,内容长度为10266。问题似乎来自http响应本身。问题是java应用程序使用的文件是.jar,由于这个额外的字节,它无法用类加载器加载这些文件。用于从服务器下载的代码段为:Java python cgi http响应向内容添加额外字节,java,python,apache,sqlite,http,Java,Python,Apache,Sqlite,Http,我一直在使用PythonCGI脚本从数据库获取文件,一切正常,但出于某种原因,文件中似乎添加了一个额外的字节。在数据库上,大小为10265字节,但在http响应中,内容长度为10266。问题似乎来自http响应本身。问题是java应用程序使用的文件是.jar,由于这个额外的字节,它无法用类加载器加载这些文件。用于从服务器下载的代码段为: def printFileHeader(): print 'Content-Type: text/plain;charset=utf-8' pr
def printFileHeader():
print 'Content-Type: text/plain;charset=utf-8'
print
def downloadAddon(addon_id):
dbConn = sqlite3.connect("addons.db")
dbCursor = dbConn.cursor()
dbCursor.execute("SELECT addon_file FROM uploaded WHERE id="+addon_id)
blobl = dbCursor.fetchone()
blobl = blobl[0]
printFileHeader()
print blobl
然后使用请求的id调用downloadAddon()
函数,但无论从何处获取文件(数据库中的blob或直接文件),http响应的内容中始终包含该额外字节,即使服务器端的文件正常。欢迎任何帮助
另外,我知道文件头不是一个合适的文件头,但出于测试目的,我这样说。我通过在文件头中提供文件的内容长度来“修复”问题,如下所示,代码如下所示:
def printFileHeader(size):
print("Content-Disposition: attachment; filename=addon.jar")
print("Content-Type: application/octet-stream")
print("Content-Length: "+str(size))
print
def downloadAddon(addon_id):
dbCursor.execute("SELECT addon_file FROM uploaded WHERE id="+addon_id)
blobl = dbCursor.fetchone()
blobl = blobl[0]
printFileHeader(len(blobl))
print(blobl)
这解决了问题,但我仍然不明白为什么仍然欢迎任何解释。此外,在检查修复前后的响应时,这里是文件的最后6个字节:
之前(带额外字节):aaaak
之后:aaaaaa=
请解释原因,谢谢