Ejemplo n.º 1
0
        public Task PutAsync(string remotename, Stream stream, CancellationToken cancelToken)
        {
            try
            {
                cosXml = GetCosXml();
                string bucket = _cosOptions.Bucket;
                string key    = GetFullKey(remotename);

                byte[] buffer = new byte[stream.Length];
                if (Utility.Utility.ForceStreamRead(stream, buffer, buffer.Length) != stream.Length)
                {
                    throw new Exception("Bad file read");
                }

                PutObjectRequest request = new PutObjectRequest(bucket, key, buffer);

                request.SetSign(TimeUtils.GetCurrentTime(TimeUnit.SECONDS), KEY_DURATION_SECOND);
                request.SetRequestHeader("Content-Type", "application/octet-stream");

                PutObjectResult result = cosXml.PutObject(request);
            }
            catch (COSXML.CosException.CosClientException clientEx)
            {
                Logging.Log.WriteErrorMessage(LOGTAG, "PutAsync", clientEx, "Put failed: {0}", remotename);
                throw;
            }
            catch (COSXML.CosException.CosServerException serverEx)
            {
                Logging.Log.WriteErrorMessage(LOGTAG, "PutAsync", serverEx, "Put failed: {0}, {1}", remotename, serverEx.GetInfo());
                throw;
            }

            return(Task.CompletedTask);
        }
Ejemplo n.º 2
0
        long durationSecond = 600; //secretKey 有效时长,单位为 秒

        public void UploadFile(string fileName, string localFileName)
        {
            try
            {
                string           bucket  = bucketName + "-" + appid; //存储桶,格式:BucketName-APPID
                PutObjectRequest request = new PutObjectRequest(bucket, fileName, localFileName);
                //设置签名有效时长
                request.SetSign(TimeUtils.GetCurrentTime(TimeUnit.SECONDS), 600);

                //执行请求
                PutObjectResult result = cosSserver.PutObject(request);
                //请求成功
                // Console.WriteLine(result.GetResultInfo());
            }
            catch (COSXML.CosException.CosClientException clientEx)
            {
                //请求失败
                Console.WriteLine("CosClientException: " + clientEx.Message);
            }
            catch (COSXML.CosException.CosServerException serverEx)
            {
                //请求失败
                Console.WriteLine("CosServerException: " + serverEx.GetInfo());
            }
        }
Ejemplo n.º 3
0
 public int Upload(string src, string key)
 {
     try
     {
         string bucket = _bucket;        // "examplebucket-1250000000"; //存储桶,格式:BucketName-APPID
                                         // string key = "exampleobject"; //对象在存储桶中的位置,即称对象键.
         string           srcPath = src; // @"F:\exampleobject";//本地文件绝对路径
         PutObjectRequest request = new PutObjectRequest(bucket, key, srcPath);
         //设置签名有效时长
         request.SetSign(TimeUtils.GetCurrentTime(TimeUnit.SECONDS), 600);
         //设置进度回调
         request.SetCosProgressCallback(delegate(long completed, long total)
         {
             Console.WriteLine(String.Format("progress = {0:##.##}%", completed * 100.0 / total));
         });
         //执行请求
         PutObjectResult result = cosXml.PutObject(request);
         //请求成功
         string r = result.GetResultInfo();
         Console.WriteLine(r);
         return(0);
     }
     catch (COSXML.CosException.CosClientException clientEx)
     {
         //请求失败
         Console.WriteLine("CosClientException: " + clientEx.Message);
     }
     catch (COSXML.CosException.CosServerException serverEx)
     {
         //请求失败
         Console.WriteLine("CosServerException: " + serverEx.GetInfo());
     }
     return(1);
 }
Ejemplo n.º 4
0
        public static void PutObject(COSXML.CosXml cosXml, string bucket, string key, string srcPath)
        {
            try
            {
                PutObjectRequest request = new PutObjectRequest(bucket, key, srcPath);
                //设置签名有效时长
                request.SetSign(TimeUtils.GetCurrentTime(TimeUnit.SECONDS), 600);

                //设置进度回调
                request.SetCosProgressCallback(delegate(long completed, long total)
                {
                    Console.WriteLine(String.Format("{0} progress = {1} / {2} : {3:##.##}%", DateTime.Now.ToString(), completed, total, completed * 100.0 / total));
                });

                //执行请求
                PutObjectResult result = cosXml.PutObject(request);

                Console.WriteLine(String.Format("{0}  {1}", DateTime.Now.ToString(), result.GetResultInfo()));
            }
            catch (CosClientException clientEx)
            {
                QLog.D("XIAO", clientEx.Message);
                Console.WriteLine("CosClientException: " + clientEx.StackTrace);
            }
            catch (CosServerException serverEx)
            {
                QLog.D("XIAO", serverEx.Message);
                Console.WriteLine("CosServerException: " + serverEx.GetInfo());
            }
        }
Ejemplo n.º 5
0
        public void PutObjectWithKMS(COSXML.CosXml cosXml, string bucket, string key, string srcPath)
        {
            try
            {
                PutObjectRequest request = new PutObjectRequest(bucket, key, srcPath);
                //设置签名有效时长
                request.SetSign(TimeUtils.GetCurrentTime(TimeUnit.SECONDS), 600);
                request.IsHttps = true;
                //设置进度回调
                request.SetCosProgressCallback(delegate(long completed, long total)
                {
                    //Console.WriteLine(String.Format("{0} progress = {1} / {2} : {3:##.##}%", DateTime.Now.ToString(), completed, total, completed * 100.0 / total));
                });

                request.SetCosServerSideEncryptionWithKMS(null, null);

                //执行请求
                PutObjectResult result = cosXml.PutObject(request);

                Console.WriteLine(result.GetResultInfo());
            }
            catch (CosClientException clientEx)
            {
                Console.WriteLine("CosClientException: " + clientEx.Message);
                //Assert.True(false);
            }
            catch (CosServerException serverEx)
            {
                Console.WriteLine("CosServerException: " + serverEx.GetInfo());
                //Assert.True(true);
            }
        }
Ejemplo n.º 6
0
        public async Task <ResponseModel> UpFile(string key, string srcPath)
        {
            try
            {
                string           bucket  = _buketName + "-" + _appid; //存储桶名称 格式:BucketName-APPID
                PutObjectRequest request = new PutObjectRequest(bucket, key, srcPath);
                //设置签名有效时长
                request.SetSign(TimeUtils.GetCurrentTime(TimeUnit.SECONDS), 600);
                //设置进度回调
                request.SetCosProgressCallback(delegate(long completed, long total)
                {
                    Console.WriteLine(String.Format("progress = {0:##.##}%", completed * 100.0 / total));
                });
                //执行请求
                PutObjectResult result = await Task.FromResult(_cosXml.PutObject(request));

                return(new ResponseModel {
                    Code = 200, Message = result.GetResultInfo()
                });
            }
            catch (CosClientException clientEx)
            {
                return(new ResponseModel {
                    Code = 0, Message = "CosClientException: " + clientEx.Message
                });
            }
            catch (CosServerException serverEx)
            {
                return(new ResponseModel {
                    Code = 0, Message = "CosServerException: " + serverEx.GetInfo()
                });
            }
        }
Ejemplo n.º 7
0
        /// <summary>
        /// 上传指定文件到对象存储的CoursesExport目录中
        /// </summary>
        /// <param name="fileName">文件名</param>
        /// <param name="path">本地文件的绝对路径</param>
        /// <returns>下载地址</returns>
        public static String UploadFile(string fileName, string path)
        {
            CosXmlConfig config = new CosXmlConfig.Builder()
                                  .SetConnectionTimeoutMs(60000) //设置连接超时时间,单位毫秒,默认45000ms
                                  .SetReadWriteTimeoutMs(40000)  //设置读写超时时间,单位毫秒,默认45000ms
                                  .IsHttps(true)                 //设置默认 HTTPS 请求
                                  .SetAppid("***REMOVED***")     //设置腾讯云账户的账户标识 APPID
                                  .SetRegion("***REMOVED***")    //设置一个默认的存储桶地域
                                  .Build();

            string AppDirectory   = CQ.Api.AppDirectory;
            string secretId       = ini.Read(AppDirectory + @"\CosSecret.ini", "CosSecret", "SecretId", "");  //云 API 密钥 SecretId
            string secretKey      = ini.Read(AppDirectory + @"\CosSecret.ini", "CosSecret", "SecretKey", ""); //云 API 密钥 SecretKey
            long   durationSecond = 600;                                                                      //每次请求签名有效时长,单位为秒
            QCloudCredentialProvider qCloudCredentialProvider = new DefaultQCloudCredentialProvider(secretId,
                                                                                                    secretKey, durationSecond);

            CosXml cosXml = new CosXmlServer(config, qCloudCredentialProvider);

            try
            {
                string bucket  = "chajian-***REMOVED***";    //存储桶,格式:BucketName-APPID
                string key     = "***REMOVED***" + fileName; //对象在存储桶中的位置,即称对象键
                string srcPath = path;                       //本地文件绝对路径
                if (!File.Exists(srcPath))
                {
                    // 如果不存在目标文件,创建一个临时的测试文件
                    File.WriteAllBytes(srcPath, new byte[1024]);
                }

                PutObjectRequest request = new PutObjectRequest(bucket, key, srcPath);
                //设置签名有效时长
                request.SetSign(TimeUtils.GetCurrentTime(TimeUnit.SECONDS), 600);
                //设置进度回调
                request.SetCosProgressCallback(delegate(long completed, long total)
                {
                    Console.WriteLine(String.Format("progress = {0:##.##}%", completed * 100.0 / total));
                });
                //执行请求
                PutObjectResult result = cosXml.PutObject(request);
                //对象的 eTag
                string eTag = result.eTag;

                return("***REMOVED***CoursesExport/" + fileName);
            }
            catch (COSXML.CosException.CosClientException clientEx)
            {
                //请求失败
                CQ.Log.Warning("CosClientException: ", clientEx);
                return("");
            }
            catch (COSXML.CosException.CosServerException serverEx)
            {
                //请求失败
                CQ.Log.Warning("CosServerException: ", serverEx.GetInfo());
                return("");
            }
        }
        public async Task <IActionResult> Get()
        {
            var retryPolicy = Policy.Handle <COSXML.CosException.CosServerException>()
                              .WaitAndRetry(new List <TimeSpan>()
            {
                TimeSpan.FromSeconds(1),
                TimeSpan.FromSeconds(3),
                TimeSpan.FromSeconds(5),
            }, (ex, dt) =>
            {
                Console.WriteLine($"{DateTime.Now} {ex.Message}  {dt} ");
            });
            LongTermJobObjectModel longTermJobObjectModel = new LongTermJobObjectModel()
            {
                Id     = 12,
                Name   = "xzlxzl",
                Age    = 20,
                Remark = "测试一下"
            };


            var jsonContent = JsonConvert.SerializeObject(longTermJobObjectModel, _serializerSetting);

            try
            {
                //string bucket = "job-dev"; //存储桶,格式:BucketName-APPID
                string key = $"/test/{longTermJobObjectModel.Id}.json"; //对象在存储桶中的位置,即称对象键.
                //string srcPath =           @"G:\c03fd54abe6e19a631bc59.jpg";//本地文件绝对路径
                PutObjectRequest request = new PutObjectRequest(_cosXmlOptions.Bucket, key, Encoding.Default.GetBytes(jsonContent));
                //设置签名有效时长
                request.SetSign(TimeUtils.GetCurrentTime(TimeUnit.SECONDS), 60 * 60 * 5);
                //执行请求
                retryPolicy.Execute(() =>
                {
                    PutObjectResult result = _cosXmlServer.PutObject(request);
                });
                return(Ok());
            }
            catch (COSXML.CosException.CosServerException serverEx)
            {
                //请求失败
                Console.WriteLine(serverEx);
                return(Ok(serverEx));
            }
            //var rng = new Random();
            //return Enumerable.Range(1, 5).Select(index => new WeatherForecast
            //{
            //    Date = DateTime.Now.AddDays(index),
            //    TemperatureC = rng.Next(-20, 55),
            //    Summary = Summaries[rng.Next(Summaries.Length)]
            //})
            //.ToArray();
        }
Ejemplo n.º 9
0
 private void SimpleUpload()
 {
     putObjectRequest = new PutObjectRequest(bucket, key, srcPath, sendOffset, sendContentLength);
     putObjectRequest.SetSign(TimeUtils.GetCurrentTime(TimeUnit.SECONDS), 600);
     if (progressCallback != null)
     {
         putObjectRequest.SetCosProgressCallback(progressCallback);
     }
     cosXmlServer.PutObject(putObjectRequest, delegate(CosResult cosResult)
     {
         lock (syncExit)
         {
             if (isExit)
             {
                 if (taskState == TaskState.CANCEL)
                 {
                     DeleteObject();
                 }
                 return;
             }
         }
         if (UpdateTaskState(TaskState.COMPLETED))
         {
             PutObjectResult result          = cosResult as PutObjectResult;
             UploadTaskResult copyTaskResult = new UploadTaskResult();
             copyTaskResult.SetResult(result);
             if (successCallback != null)
             {
                 successCallback(copyTaskResult);
             }
         }
     },
                            delegate(CosClientException clientEx, CosServerException serverEx)
     {
         lock (syncExit)
         {
             if (isExit)
             {
                 return;
             }
         }
         if (UpdateTaskState(TaskState.FAILED))
         {
             if (failCallback != null)
             {
                 failCallback(clientEx, serverEx);
             }
         }
     });
 }
Ejemplo n.º 10
0
        public void AsynPutObject(COSXML.CosXml cosXml, string bucket, string key, string srcPath)
        {
            PutObjectRequest request = new PutObjectRequest(bucket, key, srcPath);

            //设置签名有效时长
            request.SetSign(TimeUtils.GetCurrentTime(TimeUnit.SECONDS), 600);

            //设置进度回调
            request.SetCosProgressCallback(delegate(long completed, long total)
            {
                //Console.WriteLine(String.Format("progress = {0} / {1} : {2:##.##}%", completed, total, completed * 100.0 / total));
            });
            //添加acl
            request.SetCosACL(CosACL.PRIVATE);

            COSXML.Model.Tag.GrantAccount readAccount = new COSXML.Model.Tag.GrantAccount();
            readAccount.AddGrantAccount("1131975903", "1131975903");
            request.SetXCosGrantRead(readAccount);

            COSXML.Model.Tag.GrantAccount writeAccount = new COSXML.Model.Tag.GrantAccount();
            writeAccount.AddGrantAccount("1131975903", "1131975903");
            request.SetXCosGrantWrite(writeAccount);

            COSXML.Model.Tag.GrantAccount fullAccount = new COSXML.Model.Tag.GrantAccount();
            fullAccount.AddGrantAccount("2832742109", "2832742109");
            request.SetXCosReadWrite(fullAccount);
            cosXml.PutObject(request,
                             delegate(CosResult cosResult)
            {
                PutObjectResult result = cosResult as PutObjectResult;
                Console.WriteLine(result.GetResultInfo());
                manualResetEvent.Set();
            },
                             delegate(CosClientException clientEx, CosServerException serverEx)
            {
                if (clientEx != null)
                {
                    Console.WriteLine("CosClientException: " + clientEx.Message);
                }
                if (serverEx != null)
                {
                    Console.WriteLine("CosServerException: " + serverEx.GetInfo());
                }

                manualResetEvent.Set();
            });
        }
Ejemplo n.º 11
0
        /// <summary>
        /// 简单上传对象
        /// 上传一个对象至存储桶。最大支持上传不超过5GB的对象
        /// </summary>
        /// <param name="key">对象在存储桶中的位置,即称对象键(也可以理解为在存储桶路径)</param>
        /// <param name="data">图片/视频 byte[]数据</param>
        /// <param name="bucketName">存储桶,格式:BucketName-APPID</param>
        public static CosResultInfoResponseDto UploadObject(string key, byte[] data, string bucketName = CosConfig.DEFAULT_BUCKET)
        {
            var cosXml   = InitializeCosConfig();
            var response = new CosResultInfoResponseDto();

            try
            {
                string           bucket  = $"{bucketName}-{AppId}"; //存储桶,格式:BucketName-APPID";
                PutObjectRequest request = new PutObjectRequest(bucket, key, data);
                //设置签名有效时长
                request.SetSign(TimeUtils.GetCurrentTime(TimeUnit.SECONDS), 600);
                //设置进度回调
                request.SetCosProgressCallback(delegate(long completed, long total)
                {
                    Console.WriteLine(String.Format("progress = {0:##.##}%", completed * 100.0 / total));
                });
                //执行请求
                PutObjectResult result = cosXml.PutObject(request);
                //对象的 eTag
                string eTag = result.eTag;

                //拼接Url
                var cosDataUrl = $"https://{bucket}.cos.{CosConfig.REGION}.myqcloud.com{key}";

                response.statusCode    = result.httpCode;
                response.statusMessage = result.httpMessage;
                response.cosDataUrl    = cosDataUrl;
                return(response);
            }
            catch (COSXML.CosException.CosClientException clientEx)
            {
                //请求失败
                response.statusCode    = clientEx.errorCode;
                response.statusMessage = clientEx.Message;
                response.info          = clientEx.ToJson();
                return(response);
            }
            catch (COSXML.CosException.CosServerException serverEx)
            {
                //请求失败
                response.statusCode    = serverEx.statusCode;
                response.statusMessage = serverEx.statusMessage;
                response.info          = serverEx.GetInfo();
                return(response);
            }
        }
        /// <summary>
        /// 保存内容
        /// </summary>
        /// <param name="args"></param>
        /// <returns></returns>
        public override async Task SaveAsync(BlobProviderSaveArgs args)
        {
            var blobName = BlobNameCalculator.Calculate(args);

            if (!args.OverrideExisting && await BlobExistsAsync(args, blobName))
            {
                throw new BlobAlreadyExistsException($"Saving BLOB '{args.BlobName}' does already exists in the container '{GetContainerName(args)}'! Set {nameof(args.OverrideExisting)} if it should be overwritten.");
            }

            await CreateContainerIfNotExists(args);

            byte[] data = new byte[args.BlobStream.Length];
            await args.BlobStream.ReadAsync(data, 0, data.Length);

            var request = new PutObjectRequest(GetBucket(args), blobName, data);

            //设置签名有效时长
            request.SetSign(TimeUtils.GetCurrentTime(TimeUnit.SECONDS), 600);

            var result = GetClient(args).PutObject(request);
        }
Ejemplo n.º 13
0
        /// <summary>
        /// 上传图片
        /// </summary>
        /// <param name="fileKey">上传到云上面的 key</param>
        /// <param name="fileSrc">本地文件路径</param>
        /// <returns></returns>
        public async Task PutImage(string fileSrc, string fileKey)
        {
            var cosService = await buildCosService(putImageCredential, fileKey);

            var request = new PutObjectRequest(putImageCredential.TmpCred.Bucket, fileKey, fileSrc);

            //设置签名有效时长
            request.SetSign(TimeUtils.GetCurrentTime(TimeUnit.SECONDS), signValidSec);
            //设置进度回调
            request.SetCosProgressCallback((c, t) => {
                double percent = (double)c / t * 100;
                logger.Trace("上传进度 {}%", percent.ToString("0.00"));
            });
            //执行请求
            PutObjectResult result = cosService.PutObject(request);

            if (result.httpCode != 200)
            {
                throw new StorageException(result.httpMessage);
            }
            //logger.Trace(result.GetResultInfo());
        }
Ejemplo n.º 14
0
        public static void AsynPutObject(COSXML.CosXml cosXml, string bucket, string key, string srcPath)
        {
            QLog.D("XIAO", String.Format("currentThread id = {0}", Thread.CurrentThread.ManagedThreadId));
            PutObjectRequest request = new PutObjectRequest(bucket, key, srcPath);

            //设置签名有效时长
            request.SetSign(TimeUtils.GetCurrentTime(TimeUnit.SECONDS), 600);

            //设置进度回调
            request.SetCosProgressCallback(delegate(long completed, long total)
            {
                Console.WriteLine(String.Format("progress = {0} / {1} : {2:##.##}%", completed, total, completed * 100.0 / total));
            });

            cosXml.PutObject(request,
                             delegate(CosResult cosResult)
            {
                PutObjectResult result = cosResult as PutObjectResult;
                Console.WriteLine(result.GetResultInfo());
                Console.WriteLine(String.Format("currentThread id = {0}", Thread.CurrentThread.ManagedThreadId));
            },
                             delegate(CosClientException clientEx, CosServerException serverEx)
            {
                if (clientEx != null)
                {
                    QLog.D("XIAO", clientEx.Message);
                    Console.WriteLine("CosClientException: " + clientEx.StackTrace);
                }
                if (serverEx != null)
                {
                    QLog.D("XIAO", serverEx.Message);
                    Console.WriteLine("CosServerException: " + serverEx.GetInfo());
                }
                Console.WriteLine(String.Format("currentThread id = {0}", Thread.CurrentThread.ManagedThreadId));
            });
        }
Ejemplo n.º 15
0
        public override IVirgoFile Upload(string fileName, long fileLength, Stream data, string group = null, string subdir = null, string extra = null, string fileContentType = null)
        {
            FileAttachment file = new FileAttachment
            {
                FileName   = fileName,
                Length     = fileLength,
                UploadTime = DateTime.Now,
                SaveMode   = SaveFileModeEnum.TenCos.ToString(),
                ExtraInfo  = extra
            };
            var ext = string.Empty;

            if (string.IsNullOrEmpty(fileName) == false)
            {
                var dotPos = fileName.LastIndexOf('.');
                ext = fileName.Substring(dotPos + 1);
            }
            file.FileExt = ext;

            var ossSettings = _config.FileUploadOptions.Settings.Where(x => x.Key.ToLower() == "tencos").Select(x => x.Value).FirstOrDefault();
            FileHandlerOptions groupInfo = null;

            if (string.IsNullOrEmpty(group))
            {
                groupInfo = ossSettings?.FirstOrDefault();
            }
            else
            {
                groupInfo = ossSettings?.Where(x => x.GroupName.ToLower() == group.ToLower()).FirstOrDefault();
                if (groupInfo == null)
                {
                    groupInfo = ossSettings?.FirstOrDefault();
                }
            }
            if (groupInfo == null)
            {
                return(null);
            }


            string pathHeader = "";

            if (string.IsNullOrEmpty(subdir) == false)
            {
                pathHeader = Path.Combine(pathHeader, subdir);
            }
            else
            {
                var sub = VirgoFileProvider._subDirFunc?.Invoke(this);
                if (string.IsNullOrEmpty(sub) == false)
                {
                    pathHeader = Path.Combine(pathHeader, sub);
                }
            }
            //var fullPath = Path.Combine(pathHeader, $"{Guid.NewGuid():N}.{file.FileExt}");
            //fullPath = fullPath.Replace("\\", "/");

            BinaryReader binaryReader = new BinaryReader(data);
            var          fs           = binaryReader.ReadBytes((int)fileLength);


            CosXmlConfig config = new CosXmlConfig.Builder()
                                  .SetConnectionTimeoutMs(60000) //设置连接超时时间,单位毫秒,默认45000ms
                                  .SetReadWriteTimeoutMs(40000)  //设置读写超时时间,单位毫秒,默认45000ms
                                  .IsHttps(false)                //设置默认 HTTPS 请求
                                  .SetAppid(groupInfo.AppId)     //设置腾讯云账户的账户标识 APPID
                                  .SetRegion(groupInfo.GroupName)
                                  .Build();
            long durationSecond = 600;          //每次请求签名有效时长,单位为秒
            QCloudCredentialProvider qCloudCredentialProvider = new DefaultQCloudCredentialProvider(groupInfo.Secret,
                                                                                                    groupInfo.Key, durationSecond);
            CosXml           cosXml  = new CosXmlServer(config, qCloudCredentialProvider);
            string           bucket  = groupInfo.GroupLocation + "-" + groupInfo.AppId;                  //存储桶,格式:BucketName-APPID
            string           key     = Guid.NewGuid().ToString("N") + "." + file.FileName.Split(".")[1]; //对象在存储桶中的位置,即称对象键
            PutObjectRequest request = new PutObjectRequest(bucket, key, fs);

            request.SetRequestHeader("Content-Type", fileContentType);
            //设置签名有效时长
            request.SetSign(TimeUtils.GetCurrentTime(TimeUnit.Seconds), 600);
            //设置进度回调
            //request.SetCosProgressCallback(delegate (long completed, long total)
            //{
            //    Console.WriteLine(String.Format("progress = {0:##.##}%", completed * 100.0 / total));
            //});
            //执行请求
            PutObjectResult result = cosXml.PutObject(request);

            if (result.httpCode == 200)
            {
                file.Path      = "http://" + bucket + ".cos." + groupInfo.GroupName + ".myqcloud.com" + request.RequestPath;
                file.ExtraInfo = groupInfo.GroupName;
                file.FileName  = key;
                _dc.AddEntity(file);
                _dc.SaveChanges();
                return(file);
            }
            else
            {
                return(null);
            }
        }