这可能有点太具体了,我可能需要联系redactor支持,但我在这里看到了关于redactor的其他问题所以我想我会试一试......
好的......
所以我试图按照这里的例子让图像上传工作......
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对象,它有一个文件属性,显然包含我发布的图像文件。 我想我可以从这里弄明白。
在我获得代码块的地方,我会将其作为答案发布。
答案 0 :(得分: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 } );
}
答案 1 :(得分:0)
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);
}
令人惊讶的简单权利......:)