我正在尝试上传文件,然后使用服务器端进程进行转换。
这是在ASP.NET开发服务器上运行的Visual Studio Web ASP.NET Web应用程序的一部分,localhost:8638
string fn = System.IO.Path.GetFileNameWithoutExtension(File1.PostedFile.FileName);
Process p = new Process();
p.StartInfo.WorkingDirectory = Server.MapPath("/Data");
p.StartInfo.FileName = "cmd.exe";
p.StartInfo.Arguments = "soffice --headless --invisible -convert-to pdf "+fn+".ppt";
p.StartInfo.UseShellExecute = false;
p.StartInfo.RedirectStandardOutput = true;
p.Start();
p.WaitForExit();
我可以在cmd.exe
目录中手动打开Data
,然后输入此命令,替换文件名,它就可以了。但是,运行此代码不会产生任何结果
我错过了什么或做错了什么?
答案 0 :(得分:6)
您不能只将所有内容传递给cmd。您需要使用/ C参数,该参数将使用这些命令打开命令提示符,并在完成运行该命令时终止它。尝试将参数更改为
StartInfo.Arguments = "/C soffice --headless --invisible -convert-to pdf "+fn+".ppt";
另一种解决方案是简单地运行流程(如SLaks的评论中所述)。将p.StartInfo.FileName
更改为相应的可执行文件,编辑您的参数,您应该很高兴。这应该是首选方法,因为它可以更直接地执行您想要的操作。