Hey Hector,
Ah, yes, I was operating with the assumption that the "client" machine was a server machine itself, although if it's a user's machine and a browser, the ability to download files in a chunked manner is somewhat different. The PHP scheme envisioned would work if the PHP machine were a Compute Engine instance, although be aware that the PHP App Engine runtime, due to the App Engine serving infrastructure, buffers whole responses until the request-handler terminates, so a chunked download from a PHP App Engine module wouldn't function here.
As for network costs, I think it's impossible to avoid network transfer of data from the upload machine to the machine that the user's browser will connect to for a chunked download. One stream of data is going to Cloud Storage, and another is going to a location that it will be possible to forward the chunks to the user from.
As to the question of filesystem writing, really the only cross-browser way to do this is with file downloads.
At this point, if you don't want to stream to both Cloud Storage and the machine the client connects to before the upload is completed, it seems possible that you could just cut losses and wait for the upload to complete before initiating a download from the client? Is there any particular reason that's undesirable, other than the time offset? Perhaps the uploads and downloads will be very large files? Maybe there's a way to structure the program so that the upload-wait period isn't damaging to the user experience / system behaviour?
If you'd like, you could
make a Feature Request in the Public Issue Tracker for the Cloud Platform to have some means of chunked-downloading an object while it's being chunked-uploaded. We always encourage people to make Feature Requests, it helps improve the platform!
I hope these thoughts have been helpful; let me know your thoughts.
Sincerely,