gpt4 book ai didi

javascript - 通过 Websocket 连接将文件上传到 Django Channels(来自 React Native 应用程序)

转载 作者:行者123 更新时间:2023-12-03 08:31:23 25 4
gpt4 key购买 nike

我想允许用户从应用程序上传文件,它必须通过 WebSocket 连接,我很难找到解决方案,到目前为止我找到的所有解决方案都需要设置 Content-Type header ,并且对于 WS 连接我无论如何都找不到这样做

上传文件的 JavaScript 代码:

const fd = new FormData();
fd.append('uri', uri)

// I get the URI from user gallery expo-image-picker
// The URI looks like this: file:/data/user/0/host.exp.exponent/cache/ExperienceData/%2540zeyadshaban%252Forgachat/ImagePicker/394f4262-184d-4adc-9a51-db32afcb86a2.png

JSON.stringify({
fd,
type: 'image',
})

在后端(consumers.py)我尝试直接保存文件,但它一直抛出错误

elif json_data.get('type') == 'image':
my_model_instance.image = json_data.get('fd')

await sync_to_async(my_model_instance.save)()

当我在终端中检查 json_data.get('fd') 时,我得到了这个

>> json_data.get('fd')
{'_parts': [[...]]}

最佳答案

我强烈建议您不要通过 websocket 连接上传大量数据,最好创建另一个辅助 http 端点并将其用于文件上传。所使用的数据的 URL 编码以便将其内联到 JSON 中,这将使传输的数据量成倍增加。

如果您确实坚持使用 WS 上传数据,那么您应该使用二进制框架而不是 JS 框架。要包含内容类型,我建议您通过创建一个专门用于上传数据的专用 WS 端点来实现此目的,当您扩展与它的连接时,您首先发送带有信息(如内容类型)的 JSON 帧,然后发送大量二进制帧与数据。

关于javascript - 通过 Websocket 连接将文件上传到 Django Channels(来自 React Native 应用程序),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64985785/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com