@@ -293,14 +293,15 @@ func (handler *UnroutedHandler) PostFile(w http.ResponseWriter, r *http.Request)
293293 var size int64
294294 var sizeIsDeferred bool
295295 var partialUploads []Upload
296+ var partialFileInfos []FileInfo
296297 if isFinal {
297298 // A final upload must not contain a chunk within the creation request
298299 if containsChunk {
299300 handler .sendError (c , ErrModifyFinal )
300301 return
301302 }
302303
303- partialUploads , size , err = handler .sizeOfUploads (c , partialUploadIDs )
304+ partialUploads , partialFileInfos , size , err = handler .sizeOfUploads (c , partialUploadIDs )
304305 if err != nil {
305306 handler .sendError (c , err )
306307 return
@@ -339,7 +340,8 @@ func (handler *UnroutedHandler) PostFile(w http.ResponseWriter, r *http.Request)
339340 }
340341
341342 if handler .config .PreUploadCreateCallback != nil {
342- resp2 , changes , err := handler .config .PreUploadCreateCallback (newHookEvent (c , & info , nil ))
343+ access := newAccessInfo (AccessModeRead , partialFileInfos )
344+ resp2 , changes , err := handler .config .PreUploadCreateCallback (newHookEvent (c , & info , & access ))
343345 if err != nil {
344346 handler .sendError (c , err )
345347 return
@@ -1310,27 +1312,29 @@ func getHostAndProtocol(r *http.Request, allowForwarded bool) (host, proto strin
13101312// The get sum of all sizes for a list of upload ids while checking whether
13111313// all of these uploads are finished yet. This is used to calculate the size
13121314// of a final resource.
1313- func (handler * UnroutedHandler ) sizeOfUploads (ctx context.Context , ids []string ) (partialUploads []Upload , size int64 , err error ) {
1315+ func (handler * UnroutedHandler ) sizeOfUploads (ctx context.Context , ids []string ) (partialUploads []Upload , partialFileInfos [] FileInfo , size int64 , err error ) {
13141316 partialUploads = make ([]Upload , len (ids ))
1317+ partialFileInfos = make ([]FileInfo , len (ids ))
13151318
13161319 for i , id := range ids {
13171320 upload , err := handler .composer .Core .GetUpload (ctx , id )
13181321 if err != nil {
1319- return nil , 0 , err
1322+ return nil , nil , 0 , err
13201323 }
13211324
13221325 info , err := upload .GetInfo (ctx )
13231326 if err != nil {
1324- return nil , 0 , err
1327+ return nil , nil , 0 , err
13251328 }
13261329
13271330 if info .SizeIsDeferred || info .Offset != info .Size {
13281331 err = ErrUploadNotFinished
1329- return nil , 0 , err
1332+ return nil , nil , 0 , err
13301333 }
13311334
13321335 size += info .Size
13331336 partialUploads [i ] = upload
1337+ partialFileInfos [i ] = info
13341338 }
13351339
13361340 return
0 commit comments