OpenShift applications code is uploaded using Git.
Any changes in the repository directory is recreated after push.
Therefore, storing uploaded files in there won't work.
The only persistent directory you can use is ../data. It's full path is stored in environment variable $OPENSHIFT_DATA_DIR.
However, this dir is not public - so no URL leads there.
The solution is quite easy - just create a symlink. Here's an example for PHP.
Login to your machine via SSH, and run:
cd app-root/repo/php # php/ is the only publicly accessible directory (by default, not sure if not changeable in .htaccess).
ln -s ../../data/photos photos
This makes the content in ../data/photos publicly accessible at http://myapp-myaccount.rhcloud.com/photos/ .
The directory to manage the files in can be referred to using $_ENV['OPENSHIFT_DATA_DIR'].