【问题标题】:ASP.Net and Windows RT Image UploadASP.Net 和 Windows RT 图像上传
【发布时间】:2013-08-04 13:02:31
【问题描述】:

我正在开发一个 ASP.net (C#) 网站,该网站有一个用户输入信息的表单,它还允许用户上传图片。我正在考虑将图像路径存储在数据库(sql server 2008 r2)上并将图像保存到文件系统中。最近我们谈到了创建 WinRT 版本的可能性。我不知道 RT 开发如何管理图像的上传,涵盖两个版本的最佳方法是什么,将图像保存到文件系统或将图像直接保存到数据库?

【问题讨论】:

  • 我的回答解决了你的问题吗?如果是,请接受答案,或再次详细询问您的问题:)
  • 抱歉,是的,它解决了我的问题。
  • 很高兴听到你解决了 :) 谢谢。

标签: c# sql-server windows-runtime winrt-xaml


【解决方案1】:

传统的MultipartFormData POST 可以通过 WinRT 实现。 下面的代码是基于Portable Class Library (PCL) 实现的,它是WinRT 和.NET 的一种子集,但99% 相同。

    /// <summary>
    /// upload file
    /// </summary>
    /// <returns></returns>
    public async Task<string> UploadedFile(string filename, StreamContent streamContent)
    {
        if ((!String.IsNullOrEmpty(filename) & (streamContent != null)) != true)
        {
            throw new ArgumentException("No filename or streamContent");
        }

        // 1. File upload
        const string uploadUrl = "image/upload.ajax";

        var content = new MultipartFormDataContent { { streamContent, "file", filename } };

        var message = new HttpRequestMessage
        {
            Method = HttpMethod.Post,
            Content = content,
            RequestUri = new Uri(uploadUrl, UriKind.Relative)
        };

        var fileUploadResult = await _httpClient.SendAsync(message);

                    // Please change below response message treatment.
                    var result = await fileUploadResult.Content.ReadAsStringAsync();
        var fileUplaodJsonResult = JObject.Parse(result);
        var uploadedFileUrl = fileUplaodJsonResult["url"].Value<string>();
        Debug.WriteLine("upload: " + fileUplaodJsonResult["success"].Value<string>());

        // 2. Post image url that you posted and other messages.
        const string confirmUrl = "image/confirm.ajax";

        var confirmValue = new List<KeyValuePair<string, string>>
                              {
                                new KeyValuePair<string, string>("url", uploadedFileUrl),
// Put other messages to post


                                new KeyValuePair<string, string>("rotate", "0"), 
                             };

        var confirmResult = await _httpClient.PostAsync(confirmUrl, new FormUrlEncodedContent(confirmValue));
               // Please change below response message treatment.
        var confirmJsonResult = JObject.Parse(await confirmResult.Content.ReadAsStringAsync());
        return confirmJsonResult["url"].Value<string>();
    }

而且,您现在可以将其用作var uploadedFileUrl = await UploadedFile(fileNameOrUrl, stream);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-20
    • 2010-11-17
    • 2016-05-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多