[]
Cloud API allows you to perform the following operations:
Create an API method, say GetCloudData, to fetch or read the list of files and folders from the container.
public class FolderFiles
{
public string ParentPath { get; set; }
public string Name { get; set; }
public int Type { get; set; }
public FolderFiles[] SubFolder { get; set; }
//ItemID is required only in case of Google Drive
public string ItemID { get; set; }
public FolderFiles()
{
ParentPath = null;
}
}
public async Task<List<FolderFiles>> GetCloudData(string cloudName)
{
var applicationInitPath ="FolderName"; // Initial path from where file list should be fetched
string authority = System.Web.HttpContext.Current.Request.Url.Authority;
string apiUrl = authority + "/api/storage/List";
string parentPath = "/" + cloudName + "/" + applicationInitPath);
using (HttpClient client = new HttpClient())
{
var url = new UriBuilder("http://" + apiUrl + parentPath);
var response = await client.GetAsync(url.ToString()).ConfigureAwait(false);
if (response.IsSuccessStatusCode)
{
var data = await response.Content.ReadAsStringAsync().ConfigureAwait(false);
var table = Newtonsoft.Json.JsonConvert.DeserializeObject<List<FolderFiles>>(data);
foreach (var row in table)
{
row.ParentPath = parentPath;
if (row.Type == 0)
{
row.SubFolder = new FolderFiles[0];
}
}
return table;
}
}
return new List<FolderFiles>();
}
Create a method, say LazyLoading_GetCloudData, for fetching details for the specified folder.
public async Task< List<FolderFiles>> LazyLoading_GetCloudData(string subPath, string parentPath, string cloudName, string itemId)
{
string authority = System.Web.HttpContext.Current.Request.Url.Authority;
string apiUrl = "http://" + authority + "/api/storage/List";
using (HttpClient client = new HttpClient())
{
var url = new UriBuilder(apiUrl + parentPath);
if (!string.IsNullOrEmpty(subPath))
url = new UriBuilder(url + "/?subpath=" + subPath);
//While working with Google drive, itemId is required to make sure in which folder is working
if (!string.IsNullOrEmpty(itemId))
url = new UriBuilder(url + "?itemid=" + itemId);
var response = await client.GetAsync(url.ToString()).ConfigureAwait(false);
if (response.IsSuccessStatusCode)
{
var data = await response.Content.ReadAsStringAsync().ConfigureAwait(false);
var table = Newtonsoft.Json.JsonConvert.DeserializeObject<List<FolderFiles>>(data);
foreach (var row in table)
{
row.ParentPath = parentPath + "/" + subPath;
if (row.Type == 0)
{
row.SubFolder = new FolderFiles[0];
}
}
return table;
}
}
return new List<FolderFiles>();
}
To upload a file to the container, call C1WebAPI and refer to the specified location in code:
var baseUrl = window.location.origin;//"http://localhost:9272/";
function Upload() {
var file = document.getElementById("file").files[0];
var data = new FormData();
data.append("file", file);
var url = baseUrl+'api/storage/' + cloudName + "/" + folderPathToUploadFile+ "/" + file.name;
//This code is only for using Google Drive service
if (itemId != null) {
url = url + "?itemid=" + itemId;
}
$.ajax({
url: url,
type: 'POST',
data: data,
cache: false,
contentType: false,
processData: false
}).then(function (res) {
alert("Uploaded")
})
}
To download a file, create anchor element with the URL “api/storage”+ filepath and call click method using the following code:
var baseUrl = window.location.origin;//"http://localhost:9272/";
function Download() {
var url = baseUrl+'/api/storage/' + cloudName + "/" + folderPathToDownloadFile + "/" + FileNameToDownloadwithExtension;
var elem = wijmo.createElement("");
elem.click();
}
To delete a file, use the following code:
var baseUrl = window.location.origin;//"http://localhost:9272/";
function DeleteFile() {
var url = baseUrl+'api/storage/' + cloudName + "/" + folderPathToDeleteFile + "/?subpath=" + FileNameToDeleteWithExtn;
//This code is only for using Google Drive service
if (itemId != null) {
url = url + "?itemid=" + itemId;
}
$.ajax({
url: url,
type: 'DELETE',
cache: false,
contentType: false,
processData: false,
success: function (data, success, obj) {
alert("Deleted");
refreshTree();
}
});
}