Skip to content

Commit 5c39816

Browse files
kengwangWesley-YoungCopilot
authored
[Core] Fix upload_private_file (#83)
Co-authored-by: Wei FeiYang <wesley.f.young@outlook.com> Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
1 parent be63377 commit 5c39816

4 files changed

Lines changed: 15 additions & 17 deletions

File tree

Lagrange.Core/Internal/Events/System/FileUploadEvent.cs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
namespace Lagrange.Core.Internal.Events.System;
44

5-
internal class FileUploadEventReq(string targetUid, Stream fileStream, string fileName) : ProtocolEvent
5+
internal class FileUploadEventReq(string targetUid, Stream fileStream, string fileName, byte[] md510m) : ProtocolEvent
66
{
77
public string TargetUid { get; } = targetUid;
88

@@ -12,6 +12,8 @@ internal class FileUploadEventReq(string targetUid, Stream fileStream, string fi
1212

1313
public byte[] FileMd5 { get; } = fileStream.Md5();
1414

15+
public byte[] File10MMd5 { get; } = md510m;
16+
1517
public byte[] FileSha1 { get; } = fileStream.Sha1();
1618
}
1719

Lagrange.Core/Internal/Logic/OperationLogic.cs

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -88,15 +88,17 @@ public async Task<string> GroupFSDownload(long groupUin, string fileId)
8888
fileName = ResolveFileName(fileStream, fileName);
8989

9090
var friend = await context.CacheContext.ResolveFriend(targetUin) ?? throw new InvalidTargetException(targetUin);
91-
var request = new FileUploadEventReq(friend.Uid, fileStream, fileName);
92-
var result = await context.EventContext.SendEvent<FileUploadEventResp>(request);
93-
94-
var buffer = ArrayPool<byte>.Shared.Rent(10 * 1024 * 1024);
95-
int payload = await fileStream.ReadAsync(buffer.AsMemory(0, 10 * 1024 * 1024));
91+
92+
var buffer = ArrayPool<byte>.Shared.Rent(10002432);
93+
int payload = await fileStream.ReadAsync(buffer.AsMemory(0, 10002432));
9694
var md510m = MD5.HashData(buffer[..payload]);
9795
ArrayPool<byte>.Shared.Return(buffer);
98-
request.FileStream.Seek(0, SeekOrigin.Begin);
96+
fileStream.Seek(0, SeekOrigin.Begin);
97+
98+
var request = new FileUploadEventReq(friend.Uid, fileStream, fileName, md510m);
99+
var result = await context.EventContext.SendEvent<FileUploadEventResp>(request);
99100

101+
100102
if (!result.IsExist)
101103
{
102104
var ext = new FileUploadExt
@@ -176,8 +178,8 @@ public async Task<string> SendGroupFile(long groupUin, Stream fileStream, string
176178
var request = new GroupFSUploadEventReq(groupUin, fileName, fileStream, parentDirectory, md5);
177179
var uploadResp = await context.EventContext.SendEvent<GroupFSUploadEventResp>(request);
178180

179-
var buffer = ArrayPool<byte>.Shared.Rent(10 * 1024 * 1024);
180-
int payload = await fileStream.ReadAsync(buffer.AsMemory(0, 10 * 1024 * 1024));
181+
var buffer = ArrayPool<byte>.Shared.Rent(10002432);
182+
int payload = await fileStream.ReadAsync(buffer.AsMemory(0, 10002432));
181183
var md510m = MD5.HashData(buffer[..payload]);
182184
ArrayPool<byte>.Shared.Return(buffer);
183185
fileStream.Seek(0, SeekOrigin.Begin);

Lagrange.Core/Internal/Services/System/FileUploadService.cs

Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -19,12 +19,6 @@ internal class FileUploadService : OidbService<FileUploadEventReq, FileUploadEve
1919

2020
private protected override Task<OfflineFileUploadRequest> ProcessRequest(FileUploadEventReq request, BotContext context)
2121
{
22-
var buffer = ArrayPool<byte>.Shared.Rent(10 * 1024 * 1024);
23-
int payload = request.FileStream.Read(buffer);
24-
var md510m = MD5.HashData(buffer[..payload]);
25-
ArrayPool<byte>.Shared.Return(buffer);
26-
request.FileStream.Seek(0, SeekOrigin.Begin);
27-
2822
return Task.FromResult(new OfflineFileUploadRequest
2923
{
3024
Command = 1700,
@@ -35,7 +29,7 @@ private protected override Task<OfflineFileUploadRequest> ProcessRequest(FileUpl
3529
ReceiverUid = request.TargetUid,
3630
FileSize = (uint)request.FileStream.Length,
3731
FileName = request.FileName,
38-
Md510MCheckSum = md510m,
32+
Md510MCheckSum = request.File10MMd5,
3933
Sha1CheckSum = request.FileSha1,
4034
LocalPath = "/",
4135
Md5CheckSum = request.FileMd5,

Lagrange.Core/Message/MessagePacker.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -180,7 +180,7 @@ public static ReadOnlyMemory<byte> BuildTrans0X211(BotFriend friend, FileUploadE
180180
{
181181
FileType = 0,
182182
FileUuid = resp.FileId,
183-
FileMd5 = req.FileMd5,
183+
FileMd5 = req.File10MMd5,
184184
FileName = req.FileName,
185185
FileSize = (ulong)req.FileStream.Length,
186186
SubCmd = 1,

0 commit comments

Comments
 (0)