Search code examples
androidapiasp.net-apicontroller

How to upload cordova filetransfer using server asp.net


i am creating an api that will recieve file from cordova file tranfer plugin.But while uploading , we are getting error "[10/19/2016 5:03:33 PM] azad singh: E/FileTransfer: {"target":"http://54.252.109.57:1031/api/Client/SaveDocument","http_status":500,"body":"\"Object reference not set to an instance of an object.\"","code":1, [10/19/2016 5:03:45 PM] azad singh: Cordova - Camera"

    [HttpPost]
    [Route("Uploadfile")]
    public string Uploadfile()
    {
        string msg = "";
        try
        {
            HttpPostedFile file = HttpContext.Current.Request.Files["file"];
            string saveFile = file.FileName;
            //code to save the file

            msg = "File uploaded";


        }
        catch (Exception ex)
        {
            msg = "Could not upload file: " + ex.Message;

        }
        return msg;
    }

Please tell me where I am missing in my code...


Solution

  • This code works for me...

     [HttpPost]
            [Route("Uploadfile")]
            public UploadFile Uploadfile()
            {
                HttpPostedFile file = HttpContext.Current.Request.Files["file"];
                UploadFile uploadedfile = new UploadFile();
                //HttpResponseMessage response = Request.CreateResponse(HttpStatusCode.Accepted);
                try
                {
                    if (file == null)
                        return uploadedfile ;
                        //response = Request.CreateResponse(HttpStatusCode.NotFound, "");
    
    
                    int count; int sum = 0;
                    byte[] buffer = new byte[file.ContentLength];
                    int length = (int)file.InputStream.Length;
                    buffer = new byte[length];
    
                    while ((count = file.InputStream.Read(buffer, sum, length - sum)) > 0)
                        sum += count;
    
                    FileVM fileObj = new FileVM();
                    NameValueCollection parameters = HttpContext.Current.Request.Params;
                    if (parameters.Keys.Count > 0)
                    {
                        fileObj.fileId = "";
                        fileObj.fileName = file.FileName.ToString();
                        fileObj.fileType = file.ContentType;
                        fileObj.filedata = "";
    
                        fileObj.LastDownLoad = parameters.GetValues("LastDownLoad")[0];
    
                        ServicecltClients srv = new ServicecltClients();
                        uploadedfile.FileId = srv.InsertDocumentAndRelatedClient(fileObj, buffer);
                        uploadedfile.FileType = fileObj.fileType;
                        //response = Request.CreateResponse<UploadFile>(HttpStatusCode.OK, uploadedfile);
                    }
                }
                catch (Exception _ex)
                {
                    //response = Request.CreateResponse(HttpStatusCode.InternalServerError, _ex.Message);
                    ErrorLog.TraceErrorLog(_ex);
                }
                finally
                {
                    file.InputStream.Close();
                }
                return uploadedfile;
            }