我在MVC应用程序中有一个函数,其中对象被序列化。我试图在用户选择的文件夹和文件名中保存文件的内容。所以基本上用户选择路径和文件名。
我试过以下
@using (Html.BeginForm("XmlExport", "LsystemFamilies", FormMethod.Post, new { enctype = "multipart/form-data" }))
{
@Html.HiddenFor(model=>model.FamilyID)
<input type="file" name="fs" />
<input type="submit" value="Create and export"/>
}
使用上述方法,用户只能选择系统中已存在的文件。
控制器
public void XmlExport(ExportFileName file,HttpPostedFileBasefs)
{
var model = new XMLSystemFamily();
var lsystemfamily = db.LsystemFamily.FirstOrDefault(x => x.LsystemFamilyID==file.FamilyID);
//Code eliminated
var serializer = new XmlSerializer(typeof(XMLSystemFamily));
//var path = String.Format("{0}xmlfiles", AppDomain.CurrentDomain.BaseDirectory);
//FileStream fs = new FileStream("\\FE0VMC0643\\TeDaLS\\xmlfiles\\"+file.FileName+".xml", FileMode.Create);
fs.Close();
StreamWriter writer = new StreamWriter(fs.FileName);
serializer.Serialize(writer.BaseStream, model);
}
从表单返回的模型为空。文件名也是空的。 但是,当我让用户只输入文件名时,并且在控制器的注释部分中,我使用用户输入的文件名创建了一个文件,它完美地运行。但是当我在服务器中部署它时,我无法设置创建xml文件的路径。
我还看过控制器可以为xml文件生成可下载链接的帖子。但是我再次无法设置写入xml文件的路径。我已经读过,可以创建一个可下载的链接,甚至无需将其写入文件,但我无法理解它是如何实现的。
TL;博士
或