Cloud storage

I’m looking for a cloud storage solution that has an API that works with XOJO.

We need to securely upload a zipped file from within our application to a secure cloud storage location that another application will access to retrieve the files for processing.

Any suggestions?

Why not have one app just talk directly to another?

Lots of choices, although I’m not sure how many have Xojo-specific APIs (yet).

Amazon S3
Microsoft OneDrive
Apple iCloud

I don’t know of any Xojo-Specific APIs on storage. Some of the ones listed above have a REST API that can be used by Xojo.

[quote=177762:@John Fatte]I’m looking for a cloud storage solution that has an API that works with XOJO.

We need to securely upload a zipped file from within our application to a secure cloud storage location that another application will access to retrieve the files for processing.
[/quote]

Cloud is a glorified way of saying hosted space. If you mostly need that solution for yourself and your apps, get yourself a nice host such as 1701Software.com (I own no stock but my Xojo apps are hosted there), create a small middleware app in Xojo Web Application, and access it through httpsocket. Or even rent a shared hosting, and move files up and down with TCPSocket…

Here is the issue that we need to overcome.

The user will be uploading files to a storage location (in the cloud, where ever) and we need to be able to check for uploads (files sitting there waiting to be processed).

Since it’s not a mapped drive, we can’t just do a directory to get a list of the files sitting there, so how do we check the remote location for files to process?

Am I being clear?

Without knowing what cloud service or “where ever” these files will be uploaded to it’s hard to answer

Different cloud services provide different API’s for what you may be able to do

And I’d put money on it that they are all different so you’d end up having to implement several different protocols to talk to all of them

Imagine having a disk and not knowing what format its in and saying “well I want the files from this disk”
Pray to god the OS vendor has implemented a file system for it.
If not then you have to write the code to mount the volume, read the directory, read a file etc.
That’s about what you’d need to do for the “cloud or where ever” since you cant say where people will be putting files.

Norman

Thank you for the reply. As you can tell, this is new to me, but I have to find a way to accomplish this.

We are considering a lot of different storage locations, including Amazon’s S3, an FTP site at ZFTP (which we have used for years http://www.zftp.com/features.htm), or something else.

We could have our client application email us whenever they upload a file with the name of the file, then we’d know precisely what file to check for. The advantage of this is we could notify the client that the file was not uploaded successfully and they need to re-upload the file.

Any thoughts you can offer would be appreciated.

Are you intending to have your customers upload files to whatever service they want and you’ll go get it ?

How would you get the file from the users cloud service ?
If I put it on an FTP site you might need a log in to that site to be able to get the file.
And your code would need to be able to handle FTP urls
A different site might require a different API & mechanism to get a file from it (say dropbox or Amazon)

I dont see how you can avoid having to have several different protocols (FTP, HTTP, HTTPS, some custom REST API for whatever service) unless you also provide the cloud service that your customers can upload their files to

An FTP site provides a proven and tested API : FTP. Now you do need to manage the login.

Better to go with SFTP then. The OP said it needs to be secure.

On Windows you can use a free version of SFTPNetDrive. It can mount and unmount a drive from a command line to any server that supports SSH. On OS X and Windows you can use Expandrive but it is $25 per computer. Both mount a remote volume and make it look like (slow) local storage. Expandrive handles a bunch of different cloud services including Amazon.

I don’t think either of them would support doing something like mounting a SQLite DB remotely but you certainly can copy files back and forth. Your challenge might be to make the connection not a permanent mounted connection where the desktop user could “explore and play”.

https://www.eldos.com/sftp-net-drive/

http://www.expandrive.com/expandrive

For me, rather than “owning” lots of different protocols and having to support that custom code, using something like one of these options makes sense. You can think of the flat price of $25 per computer as a “support contract” to make the remote storage a reliable “black box” service.

Mark

Thanks for the links. The expandrive product looks like something that would be very useful to us.

Personally I would just use scp on Linux and OSX and pscp.exe on Windows. That will handle the file transfers without having to worry about mounting/unmounting drives that other programs installed on the user’s system would suddenly have access too while it was mounted (antivirus, cryptolocker to name a couple).

Of course.

We are using CURLSMBS for SFTP uploading files to a virtual server at our hosting company.

https://www.monkeybreadsoftware.net/class-curlsmbs.shtml

Check out Christian’s examples in his plugins download: /Examples/CURL/SFTP/