日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python分配buffer_Node.js中的buffer如何和python中的buffer相对应

發布時間:2025/3/19 python 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python分配buffer_Node.js中的buffer如何和python中的buffer相对应 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

我的整個需求可以分解為下面幾步:

step1.Node.js發送Buffer類型數據:

因為Node.js中fs文件系統讀取文件后的回掉中均返回的為Buffer類型的數據,

直接通過queryString會使其數據丟失,故先采用JSON.stringify(chunk)對其進行

格式化,然后再通過queryString將其通過post發送請求出去。

代碼如下:

var fs = require('fs');

var http = require("http");

var queryString = require("querystring")

// var filepath = "登陸注冊.png";

var filepath = "mmp.txt";

var readSteam = fs.createReadStream(filepath);

readSteam.on("data",(chunk) => {

let chunkjson = JSON.stringify(chunk);

console.log(chunkjson);

let mydata = {"name":filepath, data: chunkjson};

doapost(mydata);

})

function doapost(data) {

let contents = queryString.stringify(data);

console.log("here");

console.log(contents);

let options = {

host: "localhost",

path: "/mytestpost/",

port: 8000,

method: 'POST',

headers: {

'Content-Type': 'application/x-www-form-urlencoded',

'Content-Length': contents.length

}

};

let req = http.request(options, function (res) {

res.on("data", function (chunk) {

});

res.on("end", function (d) {

console.log("end")

});

res.on("error", function (e) {

console.log(e);

})

});

req.write(contents);

req.end();

}

step2.Django中通過bson.binary.Binary將其數據二進制化存入mongodb中:

代碼如下

def mytestpost(request):

filename = request.POST['name']

data = request.POST['data']

# return HttpResponse(data)

client = pymongo.MongoClient('localhost', 27017)

db = client.cloudfiledb

coll = db.image

coll.save(dict(

content=bson.binary.Binary(bytes(data)),

filename='115.txt'

))

return HttpResponse(json.loads(data)["data"])

step3獲取文件,請求該接口直接將該接口的返回chunk數據寫入文件:

代碼如下:

def getFile(request):

client = pymongo.MongoClient('localhost', 27017)

db = client.cloudfiledb

coll = db.image

data = coll.find_one({'filename':'115.txt'})

return HttpResponse(data['content'])

現在的問題是直接按上面的方式操作,寫出來的文件內容為:

(因圖片上傳不了,我直接把圖片內容貼出來)

{"type":"Buffer","data":[97,98,99,100,228,189,160,229,165,189]}

可以看出此數據即為上傳時讀取文件的chunk通過JSON.stringtify后的數據,也即就是bson.binary.Binary(bytes(data))中的data數據,而python中的bytes的構造函數也可接受python中的buffer類型

//~~~~

以下是 bytes 的語法:

class bytes([source[, encoding[, errors]]])

參數

如果 source 為整數,則返回一個長度為 source 的初始化數組;

如果 source 為字符串,則按照指定的 encoding 將字符串轉換為字節序列;

如果 source 為可迭代類型,則元素必須為[0 ,255] 中的整數;

如果 source 為與 buffer 接口一致的對象,則此對象也可以被用于初始化 bytearray。

如果沒有輸入任何參數,默認就是初始化數組為0個元素。

//~~

所以現在的問題就轉化為如何在python中將Node.js中buffer通過JSON.stringtify的到的數據轉化為python中的buffer類型的數據希望各位碼友不吝賜教

總結

以上是生活随笔為你收集整理的python分配buffer_Node.js中的buffer如何和python中的buffer相对应的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。