- PR -

jspからftpサーバにアップロード

投稿者投稿内容
たかひと
常連さん
会議室デビュー日: 2007/07/06
投稿数: 21
投稿日時: 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もまだ良くわからないのですが、これを利用すれば
出来るのでしょうか?

宜しくお願いいたします。
小僧
ぬし
会議室デビュー日: 2002/08/14
投稿数: 526
投稿日時: 2007-07-10 11:10
引用:

本来やりたかったことは、WEBサーバとftpサーバが同PCにあり
外部からWEBアプリケーションで(ブラウザから)直接ftpサーバにファイルを
アップロードしたかったのですが、間違った方向に進んでいたようです。



間違ってはいないと思いますよ。テストのときはWEB、FTPが別サーバだったのが、
同じサーバに載った環境で動作しないということで、ローカルホスト間の通信が
何らかの原因でできていないということですよね。

・FTPサーバへのホスト名指定が誤っている
 localhostの名前解決ができないとか
・パケットフィルタ設定されている

引用:

Commons-Netもまだ良くわからないのですが、これを利用すれば
出来るのでしょうか?



使っていないということは、別な方法でFTP処理をやられているということでしょうか?

Commons-Netなどを使っている場合は、デバッグログなどにソケット周りのエラーログ
が出力されていると思うんですが。
たかひと
常連さん
会議室デビュー日: 2007/07/06
投稿数: 21
投稿日時: 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も勉強中です。

ご教授宜しくお願いします。

小僧
ぬし
会議室デビュー日: 2002/08/14
投稿数: 526
投稿日時: 2007-07-10 13:59
引用:

受け取ったファイルをftpサーバに送信していました。


Commons-Netを使わず、サーブレット内からFTP接続してファイル転送を行おうと
しているということですが、FTPってコントロール用とデータ用の2つソケットを
使うということなどはご存知でしょうか。

引用:

servletを介さずにクライアントの
ブラウザから直接ftpサーバにファイルをアップロードさせる仕組みの検討がつかないで
悩んでおります。


IEをWebDAVのクライアントとして使えばなんとかなるかもしれませんが(←多分ダメ)、
直接FTPのアップロードはできないと思いますよ。

引用:

javaスクリプトを使ってなんとかできるのかなぁ?と調べてるところです。



いや、そういうことじゃなくて・・・。プロトコルレベルでブラウザからの
アップロードは無理だと思いますけど・・・。

引用:

同時にCommons-Netも勉強中です。



まずは、Commons-Net使ってWEBサーバ上からFTPサーバにファイルをアップロード
できるようになってみてください。
それから、サーバ環境などが分からないのでなんなんですが、サーブレットから
シェルを起動してFTPクライアントでサーバにアップする方法もありますよ。
決まった場所にアップするなら、シェルスクリプトを組んでおいて、アップロード
したテンポラリファイルを引数で渡す方法とかで、お手軽に処理する方法もあります。




たかひと
常連さん
会議室デビュー日: 2007/07/06
投稿数: 21
投稿日時: 2007-07-10 16:37
ソケットに関しては制御とデータの2つのソケットが必要ということは知っていましたが、
詳しく理解できているとは言い切れないのが現実のところです。

WebDAVはまったくわからないので、まずはおっしゃられる通りCommons-Netを利用して
WEBサーバから同じPCのftpサーバにファイルをアップロードできるようにしてみたいと
思います。

また、WebDAVに関してはまったくわからないのでそちらも調べてみます。

ありがとうございました。

スキルアップ/キャリアアップ(JOB@IT)