public static Task <FDFSFileInfo> GetFileInfoAsync(StorageNode storageNode, string fileName) { return(QUERY_FILE_INFO.Instance.GetRequest(storageNode.EndPoint, storageNode.GroupName, fileName) .GetResponseAsync <FDFSFileInfo>()); }
public static async Task <string> UploadAppenderFileAsync(StorageNode storageNode, byte[] contentByte, string fileExt) { using (var contentStream = new MemoryStream(contentByte, false)) { return(await UploadAppenderFileAsync(storageNode, contentStream, fileExt)); } }
public override FDFSRequest GetRequest(params object[] paramList) { if (paramList.Length != 3) { throw new FDFSException("param count is wrong"); } StorageNode storageNode = (StorageNode)paramList[0]; string fileExt = (string)paramList[1] ?? string.Empty; if (fileExt.Length > 0 && fileExt[0] == '.') { fileExt = fileExt.Substring(1); } var contentStream = (Stream)paramList[2]; var contentByteLength = contentStream.Length; UPLOAD_APPEND_FILE uploadAppendFile = new UPLOAD_APPEND_FILE { ConnectionType = FDFSConnectionType.StorageConnection, EndPoint = storageNode.EndPoint }; if (fileExt.Length > 6) { throw new FDFSException("file ext is too long"); } const int bodyBufferLen = 15; uploadAppendFile.SetBodyBuffer(bodyBufferLen); int offset = 0; uploadAppendFile.BodyBuffer[offset++] = storageNode.StorePathIndex; Util.LongToBuffer(contentByteLength, uploadAppendFile.BodyBuffer, offset); offset += 8; var fileExtByteCount = Util.StringByteCount(fileExt); Util.StringToByte(fileExt, uploadAppendFile.BodyBuffer, offset, fileExtByteCount); if (fileExtByteCount < 6) { for (var i = offset + fileExtByteCount; i < offset + 6; i++) { uploadAppendFile.BodyBuffer[i] = 0; } } uploadAppendFile.BodyStream = contentStream; var length = bodyBufferLen + contentByteLength; uploadAppendFile.Header = new FDFSHeader(length, FDFSConstants.STORAGE_PROTO_CMD_UPLOAD_APPENDER_FILE, 0); return(uploadAppendFile); }
public static async Task <string> UploadAppenderFileAsync(StorageNode storageNode, Stream contentStream, string fileExt) { var response = await UPLOAD_APPEND_FILE.Instance.GetRequest(storageNode, fileExt, contentStream) .GetResponseAsync <UPLOAD_APPEND_FILE.Response>(); return(response.FileName); }
public static async Task DownloadFileAsync(StorageNode storageNode, string fileName, IDownloadCallback downloadCallback, long offset = 0, long length = 0) { await DOWNLOAD_FILE.Instance .GetRequest(storageNode, fileName, Tuple.Create(offset, length), downloadCallback) .GetResponseAsync <DOWNLOAD_FILE.Response>(); }
public static async Task <byte[]> DownloadFileAsync(StorageNode storageNode, string fileName, long offset = 0, long length = 0) { using (var memoryStream = new MemoryStream(length > 0 ? (int)length : 0)) { var downloadStream = new StreamDownloadCallback(memoryStream); await DownloadFileAsync(storageNode, fileName, downloadStream, offset, length); return(memoryStream.ToArray()); } }