The Xbox One does indeed have a Media Player app now, and support has been added for DLNA servers. A lot of these answers are outdated so I thought I'd post some newer information here:
Option 1 (USB):
You can still plug a hard drive into the USB slot on the side of the console and there's no need for DLNA, but I have experienced connectivity issues with USB connected hard drives when using the Media Player app (powered and unpowered hard drives). Basically, they act like they've been momentarily unplugged every so often, with random frequency (see forum post here). Still, it's not a bad method, and you may not see that behavior.
But, you're just connecting a hard drive to the xbox; why can't other devices get in on the fun, either to stream from or to stream to? Wouldn't it be crazy if you could just broadcast your hard drive across the air to any other device that knew how to listen for it? You can!
Option 2 (DLNA):
This has been the optimal setup for me, and I recommend it to everyone I know
My DLNA solution so far is pretty simple, I have an app called Kodi running on my computer (a Mac Mini). Kodi used to be XBMC, Xbox Media Center, which was basically the same software that xbox 360 used to play your USB and DLNA media files, just wrapped into a nicer desktop friendly format. A good alternative for the Xbox 360 was an app called Rivet, which was simple, stable, and supported a surprisingly large list of formats (but not everything, by a long shot).
Kodi, Rivet, and legacy versions of XBMC, as well as many other apps out there, support broadcasting a DLNA server. This means I can plug my (multiple) hard drives into my Mac, open the Kodi app, and a DLNA server immediately starts running on my local network; any device on my network that can render a DLNA service will see Kodi as a "source", including the Xbox One Media Player app. I also use the ArkMedia app on my iPad Mini, and that is able to stream a video from Kodi while I'm streaming a video to the Xbox from Kodi, which is pretty cool.
So, when I open the Media Player xbox app, it shows a source named
Kodi@mac-mini.local or something similar. Kodi knows where I keep my movies (I told it so on my computer), so when I click on that source, my files immediately appear in their original folder structure. I can access a huge amount of filetypes, including
.m2ts 1080p files (which the 360 could not handle). You can't move/delete/copy files or anything like that, but you can navigate folders, look at images, play audio, etc.
The only bug I've found so far with Kodi (and maybe DLNA on Xbox One in general) is that if you pause a file for a long time, like more than 15 mins or so, it will restart whenever you want but it will throw an error after a few seconds, and you have to restart the file, fast forward to where you were watching, etc.
Maybe that's a lot of setup though, and you don't have an enormous library of 80's movies to sift through; you just want to use a handheld device to put a media file onto your TV/Xbox One's screen. All you want to do is show Grammy your vacation pictures, or show your friends a new game, but your tiny phone/tablet makes that hard. Well, you're in luck (sort of):
Option 3 ("Casting"):
I'll just call this "casting" for simplicity's sake, since Chromecast, "Play to", and "Screen Mirroring" are all used almost interchangeably by different devices and software. It is the most unstable way to stream media, since devices, software, and filetypes can all affect how it works (or, cause it to not work at all).
For example, I have a Samsung Galaxy S4 Android phone running Lollipop. When I open the Netflix app on my phone and start a movie, there's a symbol at the top that looks like a TV screen and little wifi radials coming out from it. There's no word for it on my phone, some devices call it "Play To functionality", but it just "casts" Netflix to another device on the network (and Xbox One shows up in the list of devices for me).
If I hit this button, the Netflix app opens on the Xbox, and my phone turns into a weird kind of remote for Netflix that's unavailable in any other scenario. So I'm not streaming Netflix, or my phone's screen, my phone just told the Xbox One to start up Netflix, on this particular movie/episode, and continues to sync remote-based commands like pause, play, rewind, etc. The ArkMedia app on my iPad Mini also does this, it will send a video to the Xbox Video app (not the media player app), and while the video plays on the Xbox, the iPad becomes a weird remote again, but the ArkMedia remote is much nicer, has volume, a timecode scrubber, etc. This is what I'd call "Play-to", but it doesn't really matter, the point is that everyone does it a little differently.
Regardless, this technology has now been adopted by Xbox natively as part of the new "Screen Mirroring" Xbox One app, which I believe is only available to Preview Program members at the time of this post. As an added benefit of having an Android running Lollipop, Screen Mirroring is also built into my phone OS out of the box. I turn on Screen Mirroring in my phone's settings, turn on the Screen Mirroring app on the Xbox One, and after a few seconds of syncing, the TV screen is now a mirror image of my phone's home screen, completely interactive. I can do anything, use apps, make calls, not to mention watch videos recorded from my camera, as well as any I have on my device (I always keep a few X-Files episodes on the SD card in case I'm bored without service somewhere).
The best part, IMO, is that if I watch a Youtube video, play a game, or get a system alert the sound comes out of the TV! It's perfect for playing games that are just too clumsy for a tiny phone, or showing off your phone in general, or watching a video without crowding around the phone screen.
BUT! The success / failure you have "casting" depends on your device, the software you use to cast, and the file/media type you're trying to cast. Certain things just don't play well together, or at least play together differently.
On my specific version of Android, the phone is MIRRORED to the Xbox "Screen Mirror" app, meaning you see your entire phone display on the TV, and the TV screen swipes as your finger swipes the phone, showing your background and status bar, etc. Certain phones (i've personally seen this on an iPhone 6) can only use the "Play to" style of casting to put something like camera photos on the Xbox Screen, using the Screen Mirroring app. E.g. when you "cast" a photo from an iphone to an Xbox One, when you swipe your finger to show the next photo, the Xbox screen doesn't swipe. It shows a spinning load icon, and then the next picture appears. It's casting each file, one at a time, like a DLNA server would, and not streaming the phone's entire display output (like my awesome Android does). It seems every device has its own rules about what files / apps it is willing to cast/stream/play-to.
I'm sure I missed some methods here, please feel free to add them in comments and I'll update this answer any time.