I used node textures in a mesh I exported to .FBX.
I then imported it into Unreal Engine 4 and it didn't import any textures; I clicked the Upload Textures option in Unreal Engine.
Is there something I'm doing wrong or is it Blender?
This is a frequently asked question.
Most file formats just don't support exporting textures, let alone full blown material definitions or other application specific features. Also most Blender importers/exporters don't currently support node based materials well.
Manually reproduce your materials using available textures at the target environment.
Materials are too specific and tightly tied to the rendering system they belong to, or software they were created with. You can't, for the most part, import/export material definitions between applications, you can't even get Blender Internal Materials to work with Cycles Renderer nor vice versa, and they are both created with Blender, let alone between completely different applications.
For this reason no file format you use can, or even tries to, import or export material properties, be it 3DS, FBX, Collada, STL, OBJ or any other. These are mostly mesh-only, geometry-centric file formats concerned with porting object shapes, and some times animation, armature, and basic shading, material or lighting properties (like MTL files); never full complex material definitions.
There are simply no data structures in the specifications for most exchange file formats to accommodate all types of material properties, settings or maps; and even if there were, there are way too many different rendering systems for a variety of purposes and responding to distinct requirements (like speed or responsiveness for real time rendering engines or games, or realism for physically based 'offline renders'), and each using its own different set of parameters and particular ways of interpreting specific properties to be able to correctly map settings, parameters or particular features and ways of working between them easily.
Some more common image based texture channels may some times be correctly preserved, like diffuse, specular, glossiness, or the increasingly popular PBR workflows, but certainly never procedurally generated textures and/or generated texture coordinates, these are generated at render time and can't be exported. Have in mind that most Blender exporters do not support Cycles node based materials at all (at the time of writing for Blender 2.79#), so even image textures used in Cycles node trees are most likely not expected to be preserved.
Same applies for many other features specific to applications or render engines, like lighting, shadow settings, lamps, cameras, physics simulations (fluids, cloths, soft bodies), texture options (clamping, clipping, color adjustments), material options (backface culling, shadows, visibility, transparency and blending) particle systems, smoke and fire sims, volumetric data, modifiers, shape morphing (like shapekeys or deformation based animations) and other "generated data", can't also for the most part be imported or exported (with a few exceptions).
All you can, and should, import/export are UV coordinates with your mesh so you can correctly apply your textures at the "target application", game engine or receiving rendering environment, be it Unreal, Unity, Gamekit, external rendering software or whatnot; or even Blender itself when importing models from elsewhere. UV maps are generally correctly preserved by most exchange file formats by default.
What you can do in some situations is use Blender to bake textures that you can later use in the final destination or receiving application to create materials there, not inside Blender.
Baking is the process of pre-calculating shading and storing it in an image texture that may incorporate several desired channels like diffuse, glossy, indirect lighting, bump maps, normal maps, light-maps, among others. This may improve graphic quality or perceived "realism" at the expense of dynamism, as certain properties of materials and textures may become static, as if "painted onto the surface", like shadows or reflections. This is often a requirement for high performance mediums or low power platforms, like web or mobile gaming, where speed takes precedence over graphic fidelity.
Due to the recent popularity of the Physically Based Rendering, and its increasing use in Game Engines and Real-Time rendering applications, it has become a sort of vaguely defined "loose standard" for describing surface properties of materials (although several differently nuanced versions exist).
The glTF-Blender-Exporter created by the Khronos group themselves supports exporting Cycles node based material. But even then some restrictions apply; at the date of writing it requires a special node group setup, specifically made for this purpose for it to work, which can be downloaded from their repository. Future 2.8# versions do plan to expand support to include Blender EEVEE nodes, possibly based of the Principled BSDF shader.
PBR is not a standard however and not every implementation works the same way or interprets the same parameters similarly. The Principled BSDF was already written according to a model designed by an established industry leader (Disney) for their own internal use, and game engines like Unreal Engine® or texture painting applications like Substance Painter® also adopted it.
As the PBR workflow gains popularity and traction it is possible that more applications "join the movement" and implement it in the future. If a common standard can be agreed upon, it may be possible that in the future more importers/exporters support these types of materials/textures. They will likely either read directly from a Blend file, use some other hypothetical new file format, or be forced to implement new standards; as the current ones still lack data structures to correctly describe them. At this point it is pure speculation, and no known plans are made.
When exporting to .fbx, you can't export materials, you'll have the surface color, but not other settings such as glossiness and reflection, for textures, yes you can, but you have to use blender internal (it does not work with cycles), and make sure you don't use nodes, apply the textures, then, when in the fbx export settings, go to bottom, set path to copy, then check the box-like icon next to it, it should now embed the textures with the exported fbx file.
PS: I didn't test the new blender 2.79