C#で
WebClient.UploadFile()
というクラスとメソッドを使うとWebサーバーにファイルを送信できるようです。
ただし、Webサーバー側でASP.NETのコードを実行する必要があるようです。
ポストされたファイルを受け入れることができ、UploadFile メソッドの使用に適した ASP.NET ページのコード例を次に示します。
このページは Web サーバー上に常駐させる必要があります。
そのアドレスにより、UploadFile メソッドの address パラメーターの値が提供されます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
<%@ Import Namespace="System"%> <%@ Import Namespace="System.IO"%> <%@ Import Namespace="System.Net"%> <%@ Import NameSpace="System.Web"%> <Script language="C#" runat=server> void Page_Load(object sender, EventArgs e) { foreach(string f in Request.Files.AllKeys) { HttpPostedFile file = Request.Files[f]; file.SaveAs("c:\\inetpub\\test\\UploadedFiles\\" + file.FileName); } } </Script> <html> <body> <p> Upload complete. </p> </body> </html> |
サーバーサイドはCentOS 6にApache 2.4が動いているので、
ASP.NETをApacheで動かすにはどうすればよいか調べてみました。
Mono (モノ)とは
ASP.NETをApacheで動かすには、どうやらCentOS環境にMonoをセットアップすればよいようです。
Mono(モノ)は、GNOMEプロジェクト創設者のミゲル・デ・イカザが開発した、Ecma標準に準じた.NET Framework互換の環境を実現するためのオープンソースのソフトウェア群、またそのプロジェクト名である。
現在はXamarin社が開発、販売、サポート業務を行っている。
共通言語基盤 (CLI) の実装やC#のコンパイラなどが含まれる。
(Wikipediaより)
Xamarinは以前、以下のように調べたことがありますが、最近の流行なんでしょうか。
CentOS 6にMonoをインストール
Monoをインストールするには、rootで以下を実行します。
1 2 3 |
# cd /etc/yum.repos.d/ # wget http://download.opensuse.org/repositories/home:tpokorra:mono/CentOS_CentOS-6/home:tpokorra:mono.repo # yum install mono-opt |
とりあえず、monoが
/opt/mono
にインストールされたようです。
1 2 3 4 5 6 7 8 9 10 11 |
# /opt/mono/bin/mono --version Mono JIT compiler version 4.0.1 (tarball Wed Jun 3 06:47:55 UTC 2015) Copyright (C) 2002-2014 Novell, Inc, Xamarin Inc and Contributors. www.mono-project.com TLS: __thread SIGSEGV: altstack Notifications: epoll Architecture: amd64 Disabled: none Misc: softdebug LLVM: yes(3.4svn-mono-/) GC: sgen |
ただ、これだけではこの先、どうすればよいのかわからないです。
さらに調べてみたところ、ApacheからMonoを使うには以下を実行する必要があるようです。
1 |
# yum install mono-libgdiplus-opt mod_mono-opt mono-xsp-opt mono-tools-opt |
ただし、実行すると以下のエラーが出てインストール出来ません。
エラー:パッケージ : libwebkit-cil-opt-0.3-11.5.x86_64 (home_tpokorra_mono)
要求 : webkitgtk
止むを得ずに、--skip-broken オプションを付けてインストールしてみました。
今度は、
/etc/httpd/conf/httpd.conf
の最後に
include /etc/httpd/conf/mod_mono.conf
が追加されていました。
このコンフィギュレーションが正しいのか確認してみます。
1 2 3 4 5 6 |
# apachectl configtest httpd: Syntax error on line 354 of /etc/httpd/conf/httpd.conf: Syntax error on line 8 of /etc/httpd/conf/mod_mono.conf: Cannot load /usr/lib64/httpd/modules/mod_mono.so into server: /usr/lib64/httpd/modules/mod_mono.so: undefined symbol: unixd_config |
何かライブラリが足りないようです。
いったん挫折します。
さくらのVPSサーバー
↓月額685円からの低価格&高パフォーマンスのVPS、さくらのVPSはコチラ
SSDプランが月々685円から使える!さくらのVPS
コメント