在 js 中我正在运行这段代码
let str = new TextDecoder("utf8").decode(new Uint8Array(reader.result));
let data = {
name:file.name,
size: args.loaded,
contentsize:str.length,
type:file.type,
content:str
};
let res = await $.post({
url:"/api/files",
data:JSON.stringify(data),
processData: false,
contentType: "application/json",
})
reader.result 的输出
reader.readAsArrayBuffer(file);
然后在 php 中获取
$new["actual"] =strlen($new["content"]);
$new["content"] = new MongoDB\BSON\Binary($new["content"] ,MongoDB\BSON\Binary::TYPE_GENERIC);
$result = IO::$db->files->insertOne($new);
然后会产生一个数据库文档
{
"name" : "test.pdf",
"size" : NumberInt(128454),
"contentsize" : NumberInt(122693),
"type" : "application/pdf",
"actual" : NumberInt(215693)
}
但是,当我将文件内容删除回文件系统时,文件已损坏并且无法打开。我已经运行了 VSCode 附带的文件比较器,并说数据库内容和原始内容之间有 0 差异,所以我只能认为问题在于文件大小和读取内容的 3kb 差异,但是什么或者为什么我无法逃脱
注意似乎只是二进制文件
天涯尽头无女友
拉丁的传说