将文件保存在asp.net文件夹中,并在桌面客户端的数据库中引用

时间:2017-09-06 16:21:54

标签: asp.net-web-api

ASP.NET WEB API:您好,我想知道使用桌面客户​​端数据库中的链接引用将文件保存在asp.net web api文件夹中。我在网上进行了搜索并得到了一些实现,但它还没有工作。

以下是我到目前为止所得到的内容。我希望有人可以帮助我。

您的贡献真的会有所帮助。

我的api控制器代码

    [HttpPost]
    public HttpResponseMessage PostFile()
    {

        HttpResponseMessage result = null;

        var httpRequest = HttpContext.Current.Request;

        if (httpRequest.Files.Count > 0)

        {

            var docfiles = new List<string>();

            foreach (string file in httpRequest.Files)

            {

                var postedFile = httpRequest.Files[file];

                if (postedFile != null)
                {
                    var filePath = HttpContext.Current.Server.MapPath("~/files" + postedFile.FileName);

                    postedFile.SaveAs(filePath);



                    docfiles.Add(filePath);
                }
            }

            result = Request.CreateResponse(HttpStatusCode.Created, docfiles);

        }

        else

        {

            result = Request.CreateResponse(HttpStatusCode.BadRequest);

        }

        return result;

    }

我的客户端代码

OpenFileDialog fd = new OpenFileDialog();
    private void btnUpload_Click(object sender, EventArgs e)
    {

        bool uploadStatus = false;
        fd.Filter = "Image Files(*.jpg; *.jpeg; *.gif; *.bmp;)|*.jpg; *jpeg; *.gif; *.bmp;";
        fd.Title = "Choose image";
        if (fd.ShowDialog() == DialogResult.OK)
        {
            picUpload.Image = new Bitmap(fd.FileName);
            foreach(String localfile in fd.FileNames)
            {
                var url = "url";
                var filepath = @"\";
                Random ran = new Random();
                var uploadFileName = "img" + ran.Next(999).ToString();
                uploadStatus = UploadConfig(url, filepath, localfile, uploadFileName);
            }
        }

        if (uploadStatus)
        {
            MessageBox.Show("Successful");
        }
        else
        {
            MessageBox.Show("Failed");
        }
    }

    bool UploadConfig(string url, string filePath, string localFileName, string UploadFileName)
    {
        bool isFileUploaded = false;

        try
        {
            using (HttpClient client = new HttpClient())
            {
                var fs = File.Open(localFileName, FileMode.Open);
                var fi = new FileInfo(localFileName);
                UploadDetails uploadDetails = null;
                bool fileUpload = false;

                MultipartFormDataContent content = new MultipartFormDataContent();
                content.Headers.Add("filePath",filePath);
                content.Add(new StreamContent(fs), "\"files\"",
                    string.Format("\"{0}\"", UploadFileName + fi.Extension));

                Task taskUpload = client.PostAsync(url, content).ContinueWith(task =>
                {
                    if(task.Status == TaskStatus.RanToCompletion)
                    {
                        var res = task.Result;

                        if (res.IsSuccessStatusCode)
                        {
                            uploadDetails = res.Content.ReadAsAsync<UploadDetails>().Result;
                            if (uploadDetails != null)
                            {
                                fileUpload = true;
                            }
                        }
                    }
                    fs.Dispose();
                });

                taskUpload.Wait();
                if (fileUpload)
                {
                    isFileUploaded = true;
                    client.Dispose();
                }
            }
        }
        catch (Exception e)
        {
            isFileUploaded = false;
        }

        return isFileUploaded;
    }

0 个答案:

没有答案