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.exeディレクトリ内を手動で開きData、このコマンドを入力してファイル名を置き換えると、機能します。ただし、このコードを実行しても結果は得られません

私は何が欠けているか、間違っていますか?

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 に答える