首页 > 解决方案 > 在 Mvc 中,使用 RedirectToAction("ReqAction", odetails) 得到错误为“输入不是有效的 base 64 字符串,因为它包含非 base 64 字符”

问题描述

如果在没有对象的情况下通过,它的工作正常

return RedirectToAction("ReqAction"); 

在用于public HttpPostedFileBase Provisionforattachment { get; set; }将文件存储在数据库中的模型中。

在以前的模型中转换为字节以将文件存储在数据库中。

byte[] UploadedFile = new byte[oPModelViewObject.Provisionforattachment.InputStream.Length];                         
oPModelViewObject.Provisionforattachment.InputStream.Read(UploadedFile, 0, UploadedFile.Length); 

当文件未上传时,尝试了几次它的工作正常。

发生错误是因为对象包含 HTTPPostedFileBase 类型的 Provisionforattachment。任何人都可以建议使用该对象进行重定向。

标签: asp.net-mvcfile-uploadbase64httppostedfilebase

解决方案


为什么接受模型只是在模型中接受字符串以仅保存文件名,然后将其直接发布到您的控制器,您可以通过以下代码将其存储到服务器

String TempFileName;
HttpFileCollection MyFileCollection = Request.Files[0];
TempFileName = "C:\\TempFiles\\File_" + MyFileCollection.FileName .ToString();
// Save the file.
MyFileCollection.SaveAs(TempFileName);
    

参考以下参数以传递您的当前值

RedirectToAction(String)
使用动作名称重定向到指定动作。

RedirectToAction(String, Object)
使用动作名称和路由值重定向到指定动作。

RedirectToAction(String, String)
使用动作名称和控制器名称重定向到指定动作。

RedirectToAction(String, RouteValueDictionary)
使用动作名称和路由字典重定向到指定的动作。

RedirectToAction(String, String, Object)
使用动作名称、控制器名称和路由字典重定向到指定动作。

RedirectToAction(String, String, RouteValueDictionary)
使用操作名称、控制器名称和路由值重定向到指定的操作。


推荐阅读