A regular characteristic write operation will send back an ACK when completed successfully, and can time out upon failure; Then you just do some simple math to keep track of which packet/data was sent/lost when the events occur. Here is the function name: CyBle_GattcWriteCharacteristicValue()
Notifications will work, but since they are inherently asynchronous and unconnected to any other packets, you will end up implementing code just to keep track of the ACK/NACK functionality of the communications.
Plus, the word "write" fits writing a file to a server more aptly in name I think. :)
thanks for the info.