- - PR -
jspからftpサーバにアップロード
投稿者 | 投稿内容 | ||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2007-07-09 21:50
>そもそもその改行はどこから来るか考えましたか?
>このコードだと1/4096の確率でファイルサイズが変わりますね。 本体の読み込みの receivedBuffer.write(buffer,0,size); の最後の時点で改行が追加されると思いました。 また、1/4096のこともわかってはいましたがほかに方法が思い浮かばなかったもので。 nagiseさんのを参考にもう一度考えてみたいと思います。 また、根本的に間違えてました。 現在WEBサーバとftpサーバが同じPCにあります。 作成中は、WEBサーバとftpサーバが別でWEBサーバのあるPCからアップロードしてうまくいってたのですが、 今回書いたものをWEBサーバーにアップして、べつのPCからアップロードしようとしたら出来ませんでした。(ソケットあたりに原因があるような気がするのですが) 本来やりたかったことは、WEBサーバとftpサーバが同PCにあり 外部からWEBアプリケーションで(ブラウザから)直接ftpサーバにファイルを アップロードしたかったのですが、間違った方向に進んでいたようです。 本来の目的どおりに行うにはどのようにすればよいのでしょうか? Commons-Netもまだ良くわからないのですが、これを利用すれば 出来るのでしょうか? 宜しくお願いいたします。 | ||||||||||||||||
|
投稿日時: 2007-07-10 11:10
間違ってはいないと思いますよ。テストのときはWEB、FTPが別サーバだったのが、 同じサーバに載った環境で動作しないということで、ローカルホスト間の通信が 何らかの原因でできていないということですよね。 ・FTPサーバへのホスト名指定が誤っている localhostの名前解決ができないとか ・パケットフィルタ設定されている
使っていないということは、別な方法でFTP処理をやられているということでしょうか? Commons-Netなどを使っている場合は、デバッグログなどにソケット周りのエラーログ が出力されていると思うんですが。 | ||||||||||||||||
|
投稿日時: 2007-07-10 12:39
import java.io.*;
import java.net.*; import javax.servlet.*; import javax.servlet.http.*; 上記がインポートして使用していたものです。 ソケットを作りストリームでクライアントから「ENCTYPE="multipart/form-data"」で 受け取ったファイルをftpサーバに送信していました。 (WEB・ftpサーバが別PCの状態でです) Commons-Netは使っていません。 ローカルホストがサーバ自身という点がやはり原因なのでしょうか。 現在一から作り直している最中なのですが、servletを介さずにクライアントの ブラウザから直接ftpサーバにファイルをアップロードさせる仕組みの検討がつかないで 悩んでおります。 javaスクリプトを使ってなんとかできるのかなぁ?と調べてるところです。 同時にCommons-Netも勉強中です。 ご教授宜しくお願いします。 | ||||||||||||||||
|
投稿日時: 2007-07-10 13:59
Commons-Netを使わず、サーブレット内からFTP接続してファイル転送を行おうと しているということですが、FTPってコントロール用とデータ用の2つソケットを 使うということなどはご存知でしょうか。
IEをWebDAVのクライアントとして使えばなんとかなるかもしれませんが(←多分ダメ)、 直接FTPのアップロードはできないと思いますよ。
いや、そういうことじゃなくて・・・。プロトコルレベルでブラウザからの アップロードは無理だと思いますけど・・・。
まずは、Commons-Net使ってWEBサーバ上からFTPサーバにファイルをアップロード できるようになってみてください。 それから、サーバ環境などが分からないのでなんなんですが、サーブレットから シェルを起動してFTPクライアントでサーバにアップする方法もありますよ。 決まった場所にアップするなら、シェルスクリプトを組んでおいて、アップロード したテンポラリファイルを引数で渡す方法とかで、お手軽に処理する方法もあります。 | ||||||||||||||||
|
投稿日時: 2007-07-10 16:37
ソケットに関しては制御とデータの2つのソケットが必要ということは知っていましたが、
詳しく理解できているとは言い切れないのが現実のところです。 WebDAVはまったくわからないので、まずはおっしゃられる通りCommons-Netを利用して WEBサーバから同じPCのftpサーバにファイルをアップロードできるようにしてみたいと 思います。 また、WebDAVに関してはまったくわからないのでそちらも調べてみます。 ありがとうございました。 |