@@ -172,15 +172,18 @@ func (d *BaiduNetdisk) PutRapid(ctx context.Context, dstDir model.Obj, stream mo
172
172
if err != nil {
173
173
return nil , err
174
174
}
175
- // 修复时间
175
+ // 修复时间,具体原因见 Put 方法注释的 **注意**
176
176
newFile .Ctime = stream .CreateTime ().Unix ()
177
177
newFile .Mtime = stream .ModTime ().Unix ()
178
178
return fileToObj (newFile ), nil
179
179
}
180
180
181
181
// Put 文件上传,支持断点续传和 uploadid 过期重试
182
+ //
183
+ // **注意**: 截至 2024/04/20 百度云盘 api 接口返回的时间永远是当前时间,而不是文件时间。
184
+ // 而实际上云盘存储的时间是文件时间,所以此处需要覆盖时间,保证缓存与云盘的数据一致
182
185
func (d * BaiduNetdisk ) Put (ctx context.Context , dstDir model.Obj , stream model.FileStreamer , up driver.UpdateProgress ) (model.Obj , error ) {
183
- // 尝试秒传
186
+ // rapid upload 尝试秒传
184
187
if newObj , err := d .PutRapid (ctx , dstDir , stream ); err == nil {
185
188
return newObj , nil
186
189
}
@@ -213,7 +216,7 @@ func (d *BaiduNetdisk) Put(ctx context.Context, dstDir model.Obj, stream model.F
213
216
lastBlockSize = sliceSize
214
217
}
215
218
216
- // 计算 md5
219
+ //cal md5 for first 256k data 计算 md5
217
220
const SliceSize int64 = 256 * utils .KB
218
221
blockList := make ([]string , 0 , count )
219
222
byteSize := sliceSize
@@ -279,6 +282,8 @@ func (d *BaiduNetdisk) Put(ctx context.Context, dstDir model.Obj, stream model.F
279
282
return nil , err
280
283
}
281
284
if precreateResp .ReturnType == 2 {
285
+ //rapid upload, since got md5 match from baidu server
286
+ // 修复时间,具体原因见 Put 方法注释的 **注意**
282
287
precreateResp .File .Ctime = ctime
283
288
precreateResp .File .Mtime = mtime
284
289
return fileToObj (precreateResp .File ), nil
@@ -386,6 +391,7 @@ uploadLoop:
386
391
if err != nil {
387
392
return nil , err
388
393
}
394
+ // 修复时间,具体原因见 Put 方法注释的 **注意**
389
395
newFile .Ctime = ctime
390
396
newFile .Mtime = mtime
391
397
// 上传成功清理进度
0 commit comments