WooCommerce already comes with everything you need to sell all kinds of physical and digital products. For certain products, it makes sense to let your visitors customize their order. The Woo Infinite Options has you covered. It is a user-friendly plugin that lets you create user-friendly customizers for your WooCommerce products.
This plugin can change the cost of a product and its image dynamically as different values are chosen in the customizer. It has buttons, checkboxes, color/date pickers, text fields, and other components. You can duplicate customizers and steps with a click to save time setting up your site. You can also import/export data.
This plugin can also handle file uploads. loopus is the developer behind this plugin.