Concentrations of potentially toxic metals including Cd, Cu, Pb, Cr, U, Th in surface water and sediment samples collected from a river were analyzed to assess the contaminations, distribution characteristics, and sources of these metals. The contents of the metals were lower than the standard levels set by World Health Organization (WHO) for drinking water. However, U and Th contents were far beyond the background values of surface water. The concentrations of Cd, Cr, and U in sediments were higher than the background values and the Probable Effect Level (PEL) of sediment quality guidelines (SQGs) which may result in high potential harmful biological effects to aquatic ecosystems. Based on the contamination factor (CF), geo-accumulation index (Igeo), and potential ecological risk index (RI), Cd, Cr, and U were considered to be the metals that mainly contribute to the contamination of sediments. The calculation results also indicated that the sites adjacent to the uranium ore field were highly polluted. Results of cluster analysis, principal component analysis, and correlation analysis revealed that Cr, Pb, U, and Th were highly correlated with each other. These metals mainly originated from both anthropogenic sources and natural processes, especially emissions from uranium mining and quarrying, whereas Cd mostly came from anthropogenic sources (agricultural activities) of the upper reaches of the river.