0

私は、ユーザーが情報を入力するフォームを持つ ASP.net (C#) Web サイトに取り組んでおり、ユーザーが写真をアップロードすることもできます。データベース(SQL Server 2008 r2)にイメージパスを保存し、イメージをファイルシステムに保存することを考えていました。最近、WinRT バージョンを作成する可能性について話しました。RT 開発が画像のアップロードをどのように管理しているかわかりません。画像をファイル システムに保存するか、画像をデータベースに直接保存するか、両方のバージョンをカバーする最善の方法は何でしょうか?

4

1 に答える 1

1

従来のMultipartFormDataPOST は 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);

于 2013-08-05T13:46:53.133 に答える