whitechi73 / OpenShamrock

A Bot Framework based on Lsposed with OneBot11(停止维护/禁用于违法用途)
https://whitechi73.github.io/OpenShamrock
GNU General Public License v3.0
1.42k stars 186 forks source link

feat: 文件分片上传 #248

Closed oblivcheck closed 8 months ago

oblivcheck commented 8 months ago

警告: 在进一步操作之前,请检查下列选项。如果您忽视此模板或者没有提供关键信息,您的 Issue 将直接被关闭

描述功能

现在无法上传单个大压缩包,对于我来说单次请求上传大于(大约)500MB压缩文件时,日志中会出现像是这样的消息:

DefaultExtension max frame size.....

并且文件上传失败.

希望可以在文件过大无法一次性上传的时候,自动将文件分片写入缓存或者磁盘中,完成后合并. 在POST请求中设置额外选项或是在配置文件中启用.

实现方法

不知道实现难度如何,只是一个请求. 现在机器人端自动分片压缩包然后一个一个上传也是可以的.

whitechi73 commented 8 months ago

暂时会搁置,因为正在重构合并转发

whitechi73 commented 8 months ago

请问您是WebSocket请求还是HTTP请求?

whitechi73 commented 8 months ago

分片上传文件到Shamrock(WebSocket)

API端点:/upload_file_to_shamrock

请求参数

名称 类型 作用
md5 string 文件hex格式的md5值,32长度的字符串
offset uint64 文件分段上传偏移,默认值为0,从头上传
chunk string 文件分段上传数据块(base64),无需开头base64://
file_size uint64 总文件大小

响应数据

名称 类型 作用
file_size uint64 总文件大小
finish bool 是否完成上传
path string 该文件在安卓系统(shamrock环境)的路径
whitechi73 commented 8 months ago

https://whitechi73.github.io/OpenShamrock/api/shamrock.html#%E4%B8%8A%E4%BC%A0%E6%96%87%E4%BB%B6%E5%88%B0%E7%BC%93%E5%AD%98%E7%9B%AE%E5%BD%95-websocket

oblivcheck commented 8 months ago

非常抱歉现在才看到!以为要过一段时间才会添加功能的...

我自己目前使用HTTP请求来上传文件, 还可以添加一个HTTP的API吗?

另外我对新添加WS API有点困惑:

1.目前是需要在机器人端将文件分片然后一个一个上传分片吗?

2.OpenShamrock所做的事情是按照offset与md5将分片重新组装好吗?

3.offset是指的文件分片的顺序吗,如分片1,分片2,分片3;从完整文件起始位置到结束?

4.回应中的path是分片文件路径还是合并完成的文件路径?
whitechi73 commented 8 months ago

非常抱歉现在才看到!以为要过一段时间才会添加功能的...

我自己目前使用HTTP请求来上传文件, 还可以添加一个HTTP的API吗?

另外我对新添加WS API有点困惑:

1.目前是需要在机器人端将文件分片然后一个一个上传分片吗?

2.OpenShamrock所做的事情是按照offset与md5将分片重新组装好吗?

3.offset是指的文件分片的顺序吗,如分片1,分片2,分片3;从完整文件起始位置到结束?

4.回应中的path是分片文件路径还是合并完成的文件路径?
1.目前是需要在机器人端将文件分片然后一个一个上传分片吗?

对的,上传到shamrock的缓存目录。

2.OpenShamrock所做的事情是按照offset与md5将分片重新组装好吗?

对。

3.offset是指的文件分片的顺序吗,如分片1,分片2,分片3;从完整文件起始位置到结束?

对,上传的时候可以打乱顺序,保证offset正确就行。

4.回应中的path是分片文件路径还是合并完成的文件路径?

不仅是合并完成的文件也是分片文件路径
whitechi73 commented 8 months ago

非常抱歉现在才看到!以为要过一段时间才会添加功能的...

我自己目前使用HTTP请求来上传文件, 还可以添加一个HTTP的API吗?

另外我对新添加WS API有点困惑:

1.目前是需要在机器人端将文件分片然后一个一个上传分片吗?

2.OpenShamrock所做的事情是按照offset与md5将分片重新组装好吗?

3.offset是指的文件分片的顺序吗,如分片1,分片2,分片3;从完整文件起始位置到结束?

4.回应中的path是分片文件路径还是合并完成的文件路径?

HTTP那边不是已经有了一个上传API了?https://whitechi73.github.io/OpenShamrock/api/shamrock.html#%E4%B8%8A%E4%BC%A0%E6%96%87%E4%BB%B6%E5%88%B0%E7%BC%93%E5%AD%98%E7%9B%AE%E5%BD%95-http

oblivcheck commented 8 months ago

HTTP那边不是已经有了一个上传API了?

是否可以让HTTP也支持分片上传的功能呢?

whitechi73 commented 8 months ago

已实现

MoRanYue commented 8 months ago

非常抱歉现在才看到!以为要过一段时间才会添加功能的... 我自己目前使用HTTP请求来上传文件, 还可以添加一个HTTP的API吗? 另外我对新添加WS API有点困惑:

1.目前是需要在机器人端将文件分片然后一个一个上传分片吗?

2.OpenShamrock所做的事情是按照offset与md5将分片重新组装好吗?

3.offset是指的文件分片的顺序吗,如分片1,分片2,分片3;从完整文件起始位置到结束?

4.回应中的path是分片文件路径还是合并完成的文件路径?
1.目前是需要在机器人端将文件分片然后一个一个上传分片吗?

对的,上传到shamrock的缓存目录。

2.OpenShamrock所做的事情是按照offset与md5将分片重新组装好吗?

对。

3.offset是指的文件分片的顺序吗,如分片1,分片2,分片3;从完整文件起始位置到结束?

对,上传的时候可以打乱顺序,保证offset正确就行。

4.回应中的path是分片文件路径还是合并完成的文件路径?

不仅是合并完成的文件也是分片文件路径

emm,每次请求提供的MD5,是文件块的MD5,还是整个文件的MD5呀?

whitechi73 commented 8 months ago

非常抱歉现在才看到!以为要过一段时间才会添加功能的... 我自己目前使用HTTP请求来上传文件, 还可以添加一个HTTP的API吗? 另外我对新添加WS API有点困惑:

1.目前是需要在机器人端将文件分片然后一个一个上传分片吗?

2.OpenShamrock所做的事情是按照offset与md5将分片重新组装好吗?

3.offset是指的文件分片的顺序吗,如分片1,分片2,分片3;从完整文件起始位置到结束?

4.回应中的path是分片文件路径还是合并完成的文件路径?
1.目前是需要在机器人端将文件分片然后一个一个上传分片吗?

对的,上传到shamrock的缓存目录。

2.OpenShamrock所做的事情是按照offset与md5将分片重新组装好吗?

对。

3.offset是指的文件分片的顺序吗,如分片1,分片2,分片3;从完整文件起始位置到结束?

对,上传的时候可以打乱顺序,保证offset正确就行。

4.回应中的path是分片文件路径还是合并完成的文件路径?

不仅是合并完成的文件也是分片文件路径

emm,每次请求提供的MD5,是文件块的MD5,还是整个文件的MD5呀?

整个文件的

MoRanYue commented 8 months ago

好的好的