Some minor fixes

This commit is contained in:
Leon Mika 2026-03-05 20:53:26 +11:00
parent 199ff9feb9
commit 53d9b62174
2 changed files with 13 additions and 10 deletions

View file

@ -15,6 +15,7 @@ export default class UploadController extends Controller {
ev.preventDefault(); ev.preventDefault();
this._promptForUpload((files) => { this._promptForUpload((files) => {
files.sort((a, b) => b.lastModified - a.lastModified);
this._doUploads(files); this._doUploads(files);
}) })
} }

View file

@ -98,7 +98,8 @@ func (s *Service) FinalizePending(ctx context.Context, pendingGUID string, expec
} }
pendingDataFilename := filepath.Join(s.pendingDir, pu.GUID+".upload") pendingDataFilename := filepath.Join(s.pendingDir, pu.GUID+".upload")
if err := s.verifyPendingUpload(pendingDataFilename, expectedHash); err != nil { fileSize, err := s.verifyPendingUpload(pendingDataFilename, expectedHash)
if err != nil {
return err return err
} }
@ -113,7 +114,7 @@ func (s *Service) FinalizePending(ctx context.Context, pendingGUID string, expec
newUpload := models.Upload{ newUpload := models.Upload{
SiteID: site.ID, SiteID: site.ID,
GUID: models.NewNanoID(), GUID: models.NewNanoID(),
FileSize: pu.FileSize, FileSize: fileSize,
MIMEType: pu.MIMEType, MIMEType: pu.MIMEType,
Filename: pu.Filename, Filename: pu.Filename,
CreatedAt: newTime, CreatedAt: newTime,
@ -136,30 +137,31 @@ func (s *Service) FinalizePending(ctx context.Context, pendingGUID string, expec
return nil return nil
} }
func (s *Service) verifyPendingUpload(pendingDataFilename string, expectedHash string) error { func (s *Service) verifyPendingUpload(pendingDataFilename string, expectedHash string) (fileSize int64, _ error) {
expectedHashBytes, err := hex.DecodeString(expectedHash) expectedHashBytes, err := hex.DecodeString(expectedHash)
if err != nil { if err != nil {
return err return 0, err
} }
if _, err := os.Stat(pendingDataFilename); err != nil { stats, err := os.Stat(pendingDataFilename)
return err if err != nil {
return 0, err
} }
pendingDataFile, err := os.Open(pendingDataFilename) pendingDataFile, err := os.Open(pendingDataFilename)
if err != nil { if err != nil {
return err return 0, err
} }
defer pendingDataFile.Close() defer pendingDataFile.Close()
shaSum := sha256.New() shaSum := sha256.New()
if _, err := io.Copy(shaSum, pendingDataFile); err != nil { if _, err := io.Copy(shaSum, pendingDataFile); err != nil {
return err return 0, err
} }
if !bytes.Equal(shaSum.Sum(nil), expectedHashBytes) { if !bytes.Equal(shaSum.Sum(nil), expectedHashBytes) {
return errors.New("hash mismatch") return 0, errors.New("hash mismatch")
} }
return nil return stats.Size(), nil
} }