Here is a button that you can use that will import a file into a global parameter called myData:
Button["Import Data",
myData = Catch@Module[{filePath},
filePath = SystemDialogInput["FileOpen"];
If[filePath === $Canceled, Throw[$Failed]];
Import[filePath]
],
Method -> "Queued"
]
The Method -> "Queued" option keeps the process from timing out since dynamic behaviors have a time limit on them when they are preemptive (as buttons are). The Catch and Throw just help to keep things nice if you cancel the system dialog.