diff --git a/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/client/api/gui/DataSetMetadataPanel.java b/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/client/api/gui/DataSetMetadataPanel.java
index f4e186771ab0db550d43031a58cb8e0d9c47d5e4..92fd70593baaf23644cdde58b20e60bd9571c1a8 100644
--- a/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/client/api/gui/DataSetMetadataPanel.java
+++ b/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/client/api/gui/DataSetMetadataPanel.java
@@ -35,6 +35,7 @@ import java.awt.event.ItemEvent;
 import java.awt.event.ItemListener;
 import java.io.File;
 import java.util.ArrayList;
+import java.util.Collections;
 import java.util.Enumeration;
 import java.util.HashMap;
 import java.util.List;
@@ -60,6 +61,8 @@ import ch.systemsx.cisd.openbis.generic.shared.api.v1.dto.DataSetType;
  */
 public class DataSetMetadataPanel extends JPanel
 {
+    private static final String EMPTY_FILE_SELECTION = "";
+
     private static final long serialVersionUID = 1L;
 
     private final JFrame mainWindow;
@@ -74,6 +77,8 @@ public class DataSetMetadataPanel extends JPanel
 
     private final JPanel dataSetTypePanel;
 
+    private final JComboBox dataSetFileComboBox;
+
     private final JButton dataSetFileButton;
 
     private final JRadioButton experimentButton;
@@ -104,7 +109,11 @@ public class DataSetMetadataPanel extends JPanel
 
         dataSetTypeComboBox = new JComboBox();
         dataSetTypePanel = new JPanel();
-        dataSetFileButton = new JButton("");
+
+        String[] initialOptions =
+            { EMPTY_FILE_SELECTION };
+        dataSetFileComboBox = new JComboBox(initialOptions);
+        dataSetFileButton = new JButton("Browse...");
 
         createGui();
     }
@@ -119,7 +128,7 @@ public class DataSetMetadataPanel extends JPanel
     {
         if (null == newDataSetInfo)
         {
-            ownerIdText.setText("");
+            ownerIdText.setText(EMPTY_FILE_SELECTION);
             updateFileLabel();
             disableAllWidgets();
             return;
@@ -194,7 +203,31 @@ public class DataSetMetadataPanel extends JPanel
         JLabel label = new JLabel("File:", JLabel.TRAILING);
         label.setPreferredSize(new Dimension(LABEL_WIDTH, BUTTON_HEIGHT));
 
-        dataSetFileButton.setPreferredSize(new Dimension(BUTTON_WIDTH, BUTTON_HEIGHT));
+        dataSetFileComboBox.setPreferredSize(new Dimension(BUTTON_WIDTH, BUTTON_HEIGHT));
+        dataSetFileComboBox.addItemListener(new ItemListener()
+            {
+
+                public void itemStateChanged(ItemEvent e)
+                {
+                    if (null == newDataSetInfo)
+                    {
+                        return;
+                    }
+
+                    Object selectedItem = e.getItem();
+                    if (null == selectedItem || EMPTY_FILE_SELECTION == selectedItem)
+                    {
+                        newDataSetInfo.getNewDataSetBuilder().setFile(null);
+                    } else
+                    {
+                        newDataSetInfo.getNewDataSetBuilder().setFile((File) selectedItem);
+                    }
+
+                    notifyObserversOfChanges();
+                }
+
+            });
+        dataSetFileButton.setPreferredSize(new Dimension(40, BUTTON_HEIGHT));
         dataSetFileButton.setToolTipText("The file to upload.");
         dataSetFileButton.addActionListener(new ActionListener()
             {
@@ -211,13 +244,15 @@ public class DataSetMetadataPanel extends JPanel
                     if (newDirOrNull != null)
                     {
                         newDataSetInfo.getNewDataSetBuilder().setFile(newDirOrNull);
+                        clientModel.userDidSelectFile(newDirOrNull);
+                        updateFileComboBoxList();
                         updateFileLabel();
                         notifyObserversOfChanges();
                     }
                 }
 
             });
-        addRow(1, label, dataSetFileButton);
+        addRow(1, label, dataSetFileComboBox, dataSetFileButton);
 
         // The owner row
         label = new JLabel("Owner:", JLabel.TRAILING);
@@ -303,16 +338,34 @@ public class DataSetMetadataPanel extends JPanel
         clientModel.notifyObserversOfChanges(newDataSetInfo);
     }
 
+    private void updateFileComboBoxList()
+    {
+        dataSetFileComboBox.removeAllItems();
+        ArrayList<File> files = new ArrayList<File>(clientModel.getUserSelectedFiles());
+        Collections.sort(files);
+        for (File file : files)
+        {
+            dataSetFileComboBox.addItem(file);
+        }
+        dataSetFileComboBox.addItem(EMPTY_FILE_SELECTION);
+    }
+
     protected void updateFileLabel()
     {
         if (null == newDataSetInfo)
         {
-            dataSetFileButton.setText("");
+            // Select the empty string
+            dataSetFileComboBox.setSelectedItem(EMPTY_FILE_SELECTION);
             return;
         }
         File file = newDataSetInfo.getNewDataSetBuilder().getFile();
-        String filePath = (null != file) ? file.getAbsolutePath() : "";
-        dataSetFileButton.setText(filePath);
+        if (null != file)
+        {
+            dataSetFileComboBox.setSelectedItem(file);
+        } else
+        {
+            dataSetFileComboBox.setSelectedItem(EMPTY_FILE_SELECTION);
+        }
     }
 
     private void createDataSetTypePanel()
@@ -353,6 +406,27 @@ public class DataSetMetadataPanel extends JPanel
         }
     }
 
+    private void addRow(int rowy, Component label, Component field, Component button)
+    {
+        GridBagConstraints c = new GridBagConstraints();
+        c.fill = GridBagConstraints.HORIZONTAL;
+        c.gridx = 0;
+        c.gridy = rowy;
+        c.weightx = 0;
+        c.weighty = 0;
+        c.insets = new Insets((rowy > 0) ? 5 : 0, 0, 0, 5);
+        add(label, c);
+        c.gridx = 1;
+        c.weightx = 0.5;
+        c.insets = new Insets((rowy > 0) ? 5 : 0, 0, 0, 5);
+        add(field, c);
+
+        ++c.gridx;
+        c.weightx = 0;
+        c.insets = new Insets((rowy > 0) ? 5 : 0, 0, 0, 0);
+        add(button, c);
+    }
+
     private void addRow(int rowy, Component label, Component field)
     {
         GridBagConstraints c = new GridBagConstraints();
@@ -421,4 +495,5 @@ public class DataSetMetadataPanel extends JPanel
         builder.setDataSetOwnerIdentifier(text);
         notifyObserversOfChanges();
     }
+
 }
diff --git a/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/client/api/gui/DataSetUploadClientModel.java b/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/client/api/gui/DataSetUploadClientModel.java
index 55d3c9ecbb788ab8ba0c7830fb5596fd2933631a..87d0fa99e1426c60d5ff4312d5ceb9eef7dd7c3f 100644
--- a/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/client/api/gui/DataSetUploadClientModel.java
+++ b/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/client/api/gui/DataSetUploadClientModel.java
@@ -16,6 +16,7 @@
 
 package ch.systemsx.cisd.openbis.dss.client.api.gui;
 
+import java.io.File;
 import java.util.ArrayList;
 import java.util.Collections;
 import java.util.HashSet;
@@ -56,6 +57,9 @@ public class DataSetUploadClientModel
 
     private final ArrayList<NewDataSetInfo> newDataSetInfos = new ArrayList<NewDataSetInfo>();
 
+    // Track which files a user selected to make share the list of files in the selection combo box.
+    private final ArrayList<File> userSelectedFiles = new ArrayList<File>();
+
     // References to UI elements that are looking at the client model -- a way of implementing
     // obeserver.
     private DataSetUploadTableModel tableModel;
@@ -335,6 +339,11 @@ public class DataSetUploadClientModel
 
     }
 
+    public void userDidSelectFile(File selectedFile)
+    {
+        userSelectedFiles.add(selectedFile);
+    }
+
     private DataSetType tryDataSetType(String dataSetTypeCode)
     {
         if (null == dataSetTypeCode)
@@ -353,4 +362,8 @@ public class DataSetUploadClientModel
         return null;
     }
 
+    public ArrayList<File> getUserSelectedFiles()
+    {
+        return userSelectedFiles;
+    }
 }