4

我正在尝试上传文件,然后使用服务器端进程进行转换。

这是在 ASP.NET 开发服务器 localhost:8638 上运行的 Visual Studio Web ASP.NET Web 应用程序的一部分

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.exeData目录中手动打开,然后输入这个命令,替换文件名,它就会工作。但是,运行此代码不会产生任何结果

我错过了什么,或者做错了什么?

4

1 回答 1

6

您不能将所有内容都传递给 cmd。您需要使用 /C 参数,该参数将使用这些命令打开命令提示符,并在完成运行该命令时终止它。尝试将您的论点更改为

StartInfo.Arguments = "/C soffice --headless --invisible -convert-to pdf "+fn+".ppt";

另一种解决方案是简单地运行进程本身(如 SLaks 的评论中所建议的那样)。更改p.StartInfo.FileName为适当的可执行文件,编辑您的参数,您应该一切顺利。这应该是首选方法,因为它可以更直接地执行您想要的操作。

于 2013-06-18T16:55:33.990 回答