1

これはここでは少し具体的すぎる可能性があり、リダクターのサポートに連絡する必要があるかもしれませんが、ここでリダクターに関する他の質問を見たので、試してみることにしました...

Ok ...

だから私はここの例に従って画像のアップロードを機能させようとしています...

http://imperavi.com/redactor/docs/images/

私のクライアント側のコード...

        $("textarea").redactor({
            focus: true,
            imageUpload: '/MyController/UploadImage'
        });

私のMVCコントローラーアクションは次のようになります...

    public JsonResult UploadImage(object image)
    {
        // Do something with whatever that was i got from redactor
        var result = new { filelink = "" };
        return Json(result);
    }

問題は... redactor が実際に私に与えたものは何ですか? ファイル全体でしたか?チャンク?オブジェクトにはタイプ情報がまったくなく、生の投稿情報が実際には画像ファイル全体になるには少なすぎるように見えるため、わかりません。

誰かがこれを経験したことがありますか/実際に以前にやったことがありますか? この1つの機能のためにサーバーにphpをセットアップしたくありません。

編集:わかりました、もう少し掘り下げると、基になる Request オブジェクトをプルすると、明らかに投稿された画像ファイルを含む files プロパティがあることがわかります。ここから分かることもあると思います。

コードブロックを配置したら、回答として投稿します。

4

2 に答える 2

1

HttpPostedFileBase オブジェクトを受け取っています。これが私の実装です:

jQuery:

$('#blog-post').redactor(
    {
    imageUpload: '/blog/images/',
    imageGetJson: '/images/locations/blogs/'
});

次に、コントローラーで:

    public ActionResult Images(HttpPostedFileBase file)
    {
        // Verify that the user selected a file
        if( file != null && file.ContentLength > 0 )
        {
            // extract only the fielname
            var fileName = Path.GetFileName( file.FileName );
            // store the file
            var path = Path.Combine( ImageLocation.BlogPicturePath, fileName );

            file.SaveAs( path );
        }
        return Json( new { filelink = ImageLocation.BlogPictureUrl + "/" + file.FileName } );
    }
于 2013-04-03T20:30:37.853 に答える
0

わかりました...私はそこにいると思います...これには少しクリーンアップが必要であり、私のカスタムDMSコードのボンネットの下で何が起こっているのかを理解してくれるとは思いませんが、ストリームを受け取って返すと仮定してくださいFileInfo オブジェクトであり、理論的にはこれも機能するはずです...

        public ActionResult Upload()
        {
            // this object is specific to my system but all it does is 
            // stream the file to a path on the server (code not needed for this Q)
            var dmsService = _kernel.Get<IDMSFileSystemService>();

            List<FileInfo> savedFiles = new List<FileInfo>();

            for (int i = 0; i < Request.Files.Count; i++)
            {
                var file = Request.Files[i];
                using (file.InputStream)
                {
                    savedFiles.Add(dmsService.AddFromStream(file.InputStream, file.FileName);
                }
            }
            var result = savedFiles.Select(f => new { filelink = f.Path}).ToArray();
            return Json(result);
        }

驚くほど単純です... :)

于 2013-03-28T01:43:21.003 に答える