- mimi
- 常連さん
- 会議室デビュー日: 2004/01/20
- 投稿数: 26
|
投稿日時: 2004-02-17 16:30
VB.NETからWebサービスを利用して、ファイルをコピーしたいのですが、
VB.NETから自分のパソコンに対しては、
FileCopy("ファイルのコピー元",""ファイルのコピー先)
という形でコピーができます。
このような形で自分のパソコンからサーバに対して、Webサービスを利用してファイルを移動させたいのですがよい方法はないのでしょうか?
わざわざWebサービスを利用する必要はないのでしょうか?
基本的なことも理解できていない部分があるので、説明不足になっているかもしれませんがよろしくお願いします。
|
- Jubei
- ぬし
- 会議室デビュー日: 2002/03/02
- 投稿数: 830
- お住まい・勤務地: 関西
|
投稿日時: 2004-02-18 06:46
諸農です。
WEBサービス側は、どのようなメソッドを公開しているのでしょうか?
サービス側がクライアントとのファイル転送のサービスを
公開・提供していれば、ファイルの受け渡しは基本的には可能です。
パフォーマンス等は別としてですが。。
_________________ 諸農和岳
Powered by Turbo Delphi & Microsoft Visual Studio 2005
十兵衛@わんくま同盟
http://blogs.wankuma.com/jubei/
|
- mimi
- 常連さん
- 会議室デビュー日: 2004/01/20
- 投稿数: 26
|
投稿日時: 2004-02-18 09:10
WEBサービス側は、それにあったメソッドを作成しようかと思っています。
もしよければ、WEBサービス側がどのようなメソッドを提供し、クライアント側はそのメソッドをどのように利用すればよいのか、簡単なプログラムを教えていただければ幸いです。
クライアント側はVB.NETのWindowsアプリケーションで、WEBサービスはVB.NETのASP.NETWebサービスです。
|
- NAL-6295
- ぬし
- 会議室デビュー日: 2003/01/26
- 投稿数: 966
- お住まい・勤務地: 東京
|
投稿日時: 2004-02-18 09:40
http://www.amazon.co.jp/exec/obidos/ASIN/4891003049/250-3118442-2369801
この本の最初に出てくる例題が、クライアントとウェブサービスを利用したファイルの転送でした。(勿論、応用が必要な事は言わずもがな。)
一度、この本で勉強されてみるといいかもしれません。
|
- Jubei
- ぬし
- 会議室デビュー日: 2002/03/02
- 投稿数: 830
- お住まい・勤務地: 関西
|
投稿日時: 2004-02-18 22:37
諸農です。
引用: |
|
もしよければ、WEBサービス側がどのようなメソッドを提供し、クライアント側はそのメソッドをどのように利用すればよいのか、簡単なプログラムを教えていただければ幸いです。
クライアント側はVB.NETのWindowsアプリケーションで、WEBサービスはVB.NETのASP.NETWebサービスです。
|
私が以前に試したのは、サービス側をC#/ASP.NETでクライアント側をDelphi、
また、サービス側をDelphi、クライアント側をC#/WindowsFormでしたので、
言語指定のサンプル提示依頼にはお応えできそうにないですね。。(^^
というか、WEBサービスって言語依存ではなくインタフェース依存のはずでは?
_________________ 諸農和岳
Powered by Turbo Delphi & Microsoft Visual Studio 2005
十兵衛@わんくま同盟
http://blogs.wankuma.com/jubei/
|
- mimi
- 常連さん
- 会議室デビュー日: 2004/01/20
- 投稿数: 26
|
投稿日時: 2004-02-19 16:21
言われたとおり、WEBサービスは言語依存ではなくインタフェース依存だと思います。
初歩的なところも理解ができていないので、それがどのように関係しているのかはわかりません。
お返事ありがとうございます。
|
- ookubo
- 会議室デビュー日: 2003/04/14
- 投稿数: 7
|
投稿日時: 2004-02-19 17:32
FileCopy("ファイルのコピー元",""ファイルのコピー先)
"ファイルのコピー元",","ファイルのコピー先"はファイル名ですか?
また、どのような形式で指定してますか?
("C:\\HOGE\\HOGE.TXT" or "\\\\hogesserver\\share\\hoge\\hoge.txt)
|
- Jubei
- ぬし
- 会議室デビュー日: 2002/03/02
- 投稿数: 830
- お住まい・勤務地: 関西
|
投稿日時: 2004-02-21 14:36
諸農です。
その後色々調べられたかと思います。
お昼に暇時間があったので、簡単なサンプルを作ってみました。
#申し訳ない、C#ですm(__)m
参考にしてください。
■サーバー側
コード: |
|
//サーバー側のローカルで、ファイルを格納しておくパス。
const string C_FilePath = @"D:\Data\";
//サーバー側がクライアント側からファイルを受け取るメソッド。
[WebMethod]
public bool PutFile(string AFileName,byte[] AFile)
{
try
{
string filePath = C_FilePath + AFileName;
FileStream fs = File.Create(filePath);
try
{
fs.Write(AFile,0,AFile.Length);
return true;
}
finally
{
fs.Close();
}
}
catch(Exception /*ex*/)
{
return false;
}
}
//サーバー側がクライアント側にファイルを送出するメソッド。
[WebMethod]
public byte[] GetFile(string AFileName)
{
byte[] ret = null;
string filePath = C_FilePath + AFileName;
if (File.Exists(filePath))
{
FileStream fs = File.Open(filePath,FileMode.Open);
try
{
ret = new byte[fs.Length];
fs.Read(ret,0,ret.Length);
}
finally
{
fs.Close();
}
}
return ret;
}
|
■上記のサービスを利用するクライアント側
コード: |
|
//サーバにクライアントローカルのファイルを送出する
private void button1_Click(object sender, System.EventArgs e)
{
if (openFileDialog1.ShowDialog() == DialogResult.OK)
{
FileStream fs = File.Open(openFileDialog1.FileName,FileMode.Open);
try
{
string filename = Path.GetFileName(openFileDialog1.FileName);
byte[] file = new byte[fs.Length];
fs.Read(file,0,file.Length);
UpDownSV.UpDown upsv = new UpDownSV.UpDown();
if (upsv.PutFile(filename,file))
MessageBox.Show("アップ成功");
else
MessageBox.Show("アップ失敗");
}
finally
{
fs.Close();
}
}
}
//サーバーからクライアントで指定したファイル名のファイルを受信する
private void button2_Click(object sender, System.EventArgs e)
{
if (saveFileDialog1.ShowDialog() == DialogResult.OK)
{
string filename = Path.GetFileName(saveFileDialog1.FileName);
UpDownSV.UpDown upsv = new UpDownSV.UpDown();
byte[] file = upsv.GetFile(filename);
if (file.Length>0)
{
FileStream fs =
new FileStream(saveFileDialog1.FileName,FileMode.Create);
try
{
fs.Write(file,0,file.Length);
}
finally
{
fs.Close();
}
MessageBox.Show("ファイルの取得に成功しました");
}
else
{
MessageBox.Show("サーバーにファイルがないか取得に失敗しました");
}
}
}
|
このサービスのWSDLは次のようになっています。(一部抜粋)
このWSDLを元にクライアントアプリではプロキシクラスを作成して、
上記で作成したWEBサービスアプリが提供するサービスを利用しています。
コード: |
|
- <types>
- <s:schema elementFormDefault="qualified" targetNamespace="http://tempuri.org/">
- <s:element name="PutFile">
- <s:complexType>
- <s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="AFileName" type="s:string" />
<s:element minOccurs="0" maxOccurs="1" name="AFile" type="s:base64Binary" />
</s:sequence>
</s:complexType>
</s:element>
- <s:element name="PutFileResponse">
- <s:complexType>
- <s:sequence>
<s:element minOccurs="1" maxOccurs="1" name="PutFileResult" type="s:boolean" />
</s:sequence>
</s:complexType>
</s:element>
- <s:element name="GetFile">
- <s:complexType>
- <s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="AFileName" type="s:string" />
</s:sequence>
</s:complexType>
</s:element>
- <s:element name="GetFileResponse">
- <s:complexType>
- <s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="GetFileResult" type="s:base64Binary" />
</s:sequence>
</s:complexType>
</s:element>
</s:schema>
</types>
|
ではでは(^^)/
_________________ 諸農和岳
Powered by Turbo Delphi & Microsoft Visual Studio 2005
十兵衛@わんくま同盟
http://blogs.wankuma.com/jubei/
|