Skip to main content
Question

Multiple upload files Acumatica

  • February 2, 2026
  • 4 replies
  • 117 views

Forum|alt.badge.img

Is there a way in Acumatica to upload multiple files at once?
If yes, is there an existing screen or standard functionality where this is already implemented that you could share (for example, a screenshot or screen ID)?

4 replies

Forum|alt.badge.img
  • Jr Varsity III
  • February 2, 2026

@VaheGhazaryan You can drag and drop the files. Refer this. It may help you.

 


npetrosov31
Jr Varsity I
Forum|alt.badge.img+1
  • Jr Varsity I
  • February 2, 2026

hello ​@VaheGhazaryan,

Acumatica has incoming documents screen, which is accessible with special license, there is a multi-upload tool created. The aspx and sources for that screen are accessible in the Sales Demo, but the screen itself is not. Check the px:PXMultiUpload in the AP301110.aspx for this


Forum|alt.badge.img
  • Author
  • Freshman II
  • February 5, 2026

Hi ​​@npetrosov31,

Do you have any examples of how to use PXMultiUpload?


npetrosov31
Jr Varsity I
Forum|alt.badge.img+1
  • Jr Varsity I
  • February 5, 2026

Hi ​@VaheGhazaryan,

 

Here is the row for aspx:

<px:PXMultiUpload ID="foo" runat="server" View="Records" Action="UploadFiles" DropTarget=".dropFiles1" Accept=".pdf" ></px:PXMultiUpload>

Here is how it was used:

 

Here is the example of UploadFiles action, you can put custom logic in it:

public PXAction<RecognizedRecordForProcessing> UploadFiles;     
[PXButton]
[PXUIField(DisplayName = "Upload Files", Visible = false)]
public virtual IEnumerable uploadFiles(PXAdapter adapter)
{
APInvoiceRecognitionEntry aPInvoiceRecognitionEntry = PXGraph.CreateInstance<APInvoiceRecognitionEntry>();
UploadFileMaintenance uploadFileMaintenance = PXGraph.CreateInstance<UploadFileMaintenance>();
foreach (KeyValuePair<string, object> argument in adapter.Arguments)
{
if (argument.Value is byte[] array)
{
string key = argument.Key;
Guid guid = Guid.NewGuid();
string name = $"{guid}\\{key}";
FileInfo fileInfo = new FileInfo(guid, name, null, array);
if (!uploadFileMaintenance.SaveFile(fileInfo))
{
throw new PXException("The {0} file cannot be saved.", key);
}

RecognizedRecord recognizedRecord = aPInvoiceRecognitionEntry.CreateRecognizedRecord(key, array, fileInfo.UID.Value);
PXNoteAttribute.ForcePassThrow<RecognizedRecord.noteID>(aPInvoiceRecognitionEntry.RecognizedRecords.Cache);
PXNoteAttribute.SetFileNotes(aPInvoiceRecognitionEntry.RecognizedRecords.Cache, recognizedRecord, fileInfo.UID.Value);
aPInvoiceRecognitionEntry.RecognizedRecords.Cache.PersistUpdated(recognizedRecord);
}
}

adapter.StartRow = 0;
adapter.MaximumRows = 1;
return adapter.Get();
}

 

The view Records is just the grid under the multi upload action: