You can get the list of all form entries from the ExperienceForms Database.
var result = new List<FormEntry>();
var output = dataProvider.GetEntries(formId, startDate, endDate);
if (output != null && output.Any())
result = output.ToList();
for GetEntries, you can use IFormDataProvider interface.
public interface IFormDataProvider
void CreateEntry(FormEntry entry);
void DeleteEntries(Guid formId);
I've not worked on storage but based on my understanding so far, I think you can create a custom FileStorageProvider class and generate the link field property based on your need -
So the idea is if you have [FormItemID] reference in storage, you can first get the forms, (As mentioned above) and based on [FormItemID] reference you can get the files from the custom repository with the custom property of link.
I hope these details will help.