• 締切済み

決められたファイルのみアップロードする方法

閲覧いただき、ありがとうございます。 現在学習として、JSP + Java (+Seaser2) + Tomcatの組み合わせでプログラムを作成、修正を行っております。 作りたいとものして、あらかじめ決められたファイルのみをアップロードするという物になります。(例として、C:\Users\ユーザ名\Desktop\アップロード.xlsxだけをアップロードする。) その際、FormFile(.org.apache.struts.upload)にアップロードを行うファイルの情報を直接設定しようと考えましたが、FormFileにアップロードするファイルの情報(ファイル名やファイルのパス、ファイルの種類等)を直接設定することが出来ずにに困っております。 そのため、以下のことについて質問させてください。 ・アップロードするファイルの情報をFormFileに直接指定して格納する方法はあるのでしょうか? また、formFile.setFileNameにファイルのフルパスを指定し、直接設定を行いましたが、NullPointerExceptionのエラーが出てしまいます。 以下、ソースとなります。 public String upload() throws Exception { try { FileInfoDto dto = Beans.createAndCopy(FileInfoDto.class,this.fileUploadForm).execute(); dto.fileId = ""; // ここの部分で、formFileの設定を行いたい// dto.openLevel = "1"; dto.updDatetm = ""; this.fileInfoService.insertRecord(dto); // } catch (ServiceException e) { super.errorLog(e); throw e; } catch (Exception e) { super.errorLog(e); throw e; } return null; } } 当方、JavaやJSPなどに関して、スキル不足なのは承知の上なのですが、 参考になるサイトのURLだけでも教えていただければと思います。 なお、環境は以下の通りです。 ・Windows 7 Pro ・JDK1.7 ・tomcat7 どうか、宜しくお願い致します。

  • Java
  • 回答数1
  • ありがとう数0

みんなの回答

  • HNEX
  • ベストアンサー率62% (43/69)
回答No.1

やろうとしている事は 「特定のページを開いた際に、自動的に決められたパスのファイルをアップロードする」 という事でしょうか? もしそうだとするとそれは不可能です。 セキュリティの観点から、ファイルをアップロードする際は必ずinputタグを用いて、利用者が任意でファイルを選択してからでないとアップロードする事が出来ないようにブラウザは作られている筈です。 そんな事ができたら恐ろしすぎておちおちWebサイト閲覧は出来なくなってしまいますからね。

関連するQ&A

  • ファイルアップロードにて

    JSPで入力したFORMデータと画像ファイルのアップロードをひとつのサブミットボタンで同時に リクエストでサーブレットへ送るような会員登録ページのプログラムを作っているのですが、 サーブレット側で受け取ったデータが文字化けしてしまいます(下のソース中のparaValueの部分)。また受け取るファイルを画像ファイル(gifかjpeg)を かどうか判別してオッケーなら指定の場所へ登録し違うものなら削除するような機能も考えています。 (サブミットを実行する前にjavascriptなどで判別が出来ればいいのですが)誰か知恵を貸してください。 下がソースです。 <!-- jsp ----------------------------------------------> <%@ page contentType="text/html;charset=Shift_JIS" %> <html> <head> <title>会員登録</title> </head> <body> <form method="POST" enctype="multipart/form-data" action="UploadServlet"> <table border="1"> <tr> <td align="left"> ユーザーの画像: <input type="file" name="fl" size="40" /> </td> </tr> <tr> <td align="left"> ユーザーの名前: <input type="text" name="username" size="40"> </td> </tr> <tr> <td align="center"> <input type="submit" value="アップロード" /> </td> </tr> </table> </form> </body> </html> <!-- servlet -------------------------------------------> public class UploadServlet extends HttpServlet { public void doPost(HttpServletRequest req,HttpServletResponse res) throws ServletException, IOException { request.setCaracterEncoding("Shift_JIS"); //(1)アップロードファイルを格納するPATHを取得 String path = getServletContext().getRealPath("files"); //(2)ServletFileUploadオブジェクトを生成 DiskFileItemFactory factory = new DiskFileItemFactory(); ServletFileUpload upload = new ServletFileUpload(factory); //(3)アップロードする際の基準値を設定 factory.setSizeThreshold(1024); upload.setSizeMax(-1); upload.setHeaderEncoding("Shift_JIS"); try { //(4)ファイルデータ(FileItemオブジェクト)を取得し、 // Listオブジェクトとして返す List list = upload.parseRequest(req); //(5)ファイルデータ(FileItemオブジェクト)を順に処理 Iterator iterator = list.iterator(); while(iterator.hasNext()){ FileItem fItem = (FileItem)iterator.next(); //(6)ファイルデータの場合、if内を実行 if(!(fItem.isFormField())){ //(7)ファイルデータのファイル名(PATH名含む)を取得 String fileName = fItem.getName(); if((fileName != null) && (!fileName.equals(""))){ //(8)PATH名を除くファイル名のみを取得 fileName=(new File(fileName)).getName(); //(9)ファイルデータを指定されたファイルに書き出し fItem.write(new File(path + "/" + fileName)); } }else { String paraName=item.getFieldName(); String paraValue=item.getString(); System.out.println(paraName); System.out.println(paraValue); } } }catch (FileUploadException e) { e.printStackTrace(); }catch (Exception e) { e.printStackTrace(); } } }

    • ベストアンサー
    • Java
  • web.xmlでのエラーページ

    お世話になります。 Tomcat5.5、Linux環境下で、 WEB-INF/web.xmlに <error-page> <error-code>500</error-code> <location>/jsp/error.jsp</location> </error-page> <error-page> <error-type>java.lang.Exception</error-type> <location>/jsp/error.jsp</location> </error-page> という記述をしています。 (Tomcatは問題なく起動しています) サーブレット内でエラーが起こるように設定したのですが、作成したerror.jspに飛ばず、通常の500のエラーページが表示されます。 サーブレット記述 doGet(... ) throws ServletException,IOException { ...処理  try { throw new IOException(); //ここでExceptionをわざと起こしています。 ...処理  } catch (Exception e) { e.printStackTrace(); throw new ServletException(e); } なぜ、独自のエラーページに飛んでくれないのか原因が分からず投稿させていただきました。 どなたかアドバイスお願いします。

  • Struts2のファイルアップロードにて

    質問させて頂きます。 Struts2にてファイルアップロードの送信フォームを作成したところ Unable to load bean org.apache.struts2.dispatcher.multipart.MultiPartRequest (jakarta) - [unknown location] とのエラーが発生してファイルをアップロードすることができませんでした。 ビルドパスはjarファイルを読み込むことでインポートしているのですが、 このエラー文が発生する原因はなんなのでしょうか。 -----------------jsp画面-------------- <s:form name="write" action="doUpload" method="POST" enctype="multipart/form-data"> <s:file name="upload" label="File"/> <s:submit value="アップロード" /> </s:form> ----------------サーブレット------------- public class FileUploadTest extends ActionSupport{ private File upload; private String uploadContentType; private String uploadFileName; private String fileCaption; public String execute() throws Exception { return SUCCESS; } ※各セッターとゲッターは省略 ----------------struts.xml---------------- <action name="doUpload" method="upload" class="DB.FileUploadTest"> <result name="true" >/uploadTest.jsp</result> <result name="error">/uploadForm.jsp</result> </action> と記述しております。 どうかエラー原因のご教授よろしくお願いします。

  • phpでのファイルアップロード

    ファイルのアップロードについてご質問があります。 宜しくお願いします。 基礎phpという本でファイルをアップロードするサンプルがあり、このスクリプトでアップロードされたファイルを格納する『upload』というディレクトリをサーバに作成し、スクリプトを実行して、実際にファイルがアップロードできているかffftpにて『upload』ディレクトリの中を見てみると、なにも表示されませんでした。しかしブラウザから http://myドメイン/upload/ファイル名 にアクセスすると表示されます。 ですのでアップロードはできているがファイルが見えないという状態になっております。また『upload』ディレクトリの削除などもできなくなってしまいます。 サーバの設定が関係しているのかとも思ったのですが、サーバの設定を変更することはできないので、プログラムがわで何とかできないでしょうか? 大変申し訳ありませんが宜しくお願いいたします。 以下がそのコードです。 【up.html】 <html> <head><title>File Uploader</title></head> <body> <form method="post" enctype="multipart/form-data" action="up.php"> <input type="file" name="upfile"> <input type="submit" value="upload"> </form> </body> </html> 【up.php】 <html> <head><title>File Uploader</title></head> <body> <p> file uploader </p> <?php $updir = "./upload/"; $filename = $_FILES['upfile']['name']; if (move_uploaded_file($_FILES['upfile']['tmp_name'], $updir.$filename) == FALSE){ print("Upload failed..."); print($_FILES['upfile']['error']); }else { print("<b>" . $filename . "</b> uploaded!"); } ?> </body> </html>

    • ベストアンサー
    • PHP
  • Javaでファイルアップロード(画像)

    jQueryのプラグインを使い非同期で画像をアップし その画像をリサイズしサムネイル化して専用のフォルダにその画像を生成。 その専用フォルダにある画像へのパスをデータベースに保存後 画像保存先のURLを返す。 レスポンスとして返ってきた画像先のURLを元に JSPでその画像を表示。 つまりユーザがアップロードしてすぐにリサイズした画像を 表示させたいのです。 ここまでの処理を行いたいです。 ファイルをアップロードするjQueryのプラグインは以下の物を使いたいです。 http://lagoscript.org/jquery/upload そこで問題になったのですが、このプラグインの事について調べて見ると サーバーサイドで使っているプログラムは殆どPHPで書かれていました。 その中で唯一見つけたサーバーサイドのプログラムをJavaで書かれた ページが以下のものです。 http://www.h7.dion.ne.jp/~a.d.1976/play20111022.html 「Play framework」という見慣れないフレームワークを使っているみたいなのですが この一連の処理はフレームワークを使わなかった場合の処理とどう違うのでしょうか?(ソース的に) アップされた画像のリサイズ後、特定(Webで表示する為の)のディレクトリに保存、 そのディレクトリのパスをデータベースに保存。 この2つ処理は後回しにしてまずはアップロードをするプログラムを作成したいのですがフレームワークを使わない場合の処理だとどの様にソースを改良すればいいのでしょうか? 以下に上記で載せたURL(Javaで書かれたソースの)先のソース(一部)を 貼り付けました。↓↓ 「JavaScript(jQuery):主要部分」 <script type="text/javascript"> $(document).ready(function(){ $('#file1').change(function(){ $(this).upload('/Application/upload',function(res){ if($(res).text()==="0"){ $("<p>upload ok.</p>").insertAfter(this); }else{ $("<p>upload error.</p>").insertAfter(this); } }, 'text'); }); }); </script> 「Java:主要メソッドの部分」 public static void upload(File file1) { if(file1 != null){ File saveTo = new File("c:\\"+file1.getName()); file1.renameTo(saveTo); renderText("0"); }else{ renderText("-1"); } }

    • ベストアンサー
    • Java
  • ファイルアップロードが出来ません。

    phpとApacheを利用して、ファイルのアップロードしたいのですが以下のようなエラーが出て上手くいきません。 エラー文 Warning: move_uploaded_file(C:\Program File\Apache Group\Apache2\htdocs\image\200708090925000.jpg) [function.move-uploaded-file]: failed to open stream: No such file or directory in C:\Program Files\Apache Group\Apache2\htdocs\view.php on line 12 Warning: move_uploaded_file() [function.move-uploaded-file]: Unable to move 'C:\WINDOWS\Temp\php11.tmp' to 'C:\Program File\Apache Group\Apache2\htdocs\image\200708090925000.jpg' in C:\Program Files\Apache Group\Apache2\htdocs\view.php on line 12 正常にアップロード処理されませんでした。 php.iniの設定はfile_upload=On upload_tmp_dir=NULL upload_max_size=2M です。 phpinfo()で確認したところ、upload_tmp_dirがno valueになっているのですが、設定が反映されていないのでしょうか? 参考までに作成したプログラムを載せておきます。 <HTML> <HEAD> <TITLE>PHPのテキスト</TITLE> </HEAD> <BODY> <?php $file_dir = 'C:\Program File\Apache Group\Apache2\htdocs\image\\'; $file_path = $file_dir.$_FILES["uploadfile"]["name"]; if(move_uploaded_file($_FILES["uploadfile"]["tmp_name"], $file_path)){ $img_dir ="/image/"; $img_path = $img_dir.$_FILES["uploadfile"]["name"]; $size = getimagesize($file_path); ?> ファイルアップロードを完了しました。<BR> <IMG src="<?=$img_path?>"<?=$size[3]?>><BR> <B><?=mb_convert_encoding($_POST["comment"], "EUC-JP","SJIS")?></B><BR> <?php }else{ ?> 正常にアップロード処理されませんでした。<BR> <?php } ?> </BODY> </HTML> 原因が分かる方、ご意見よろしくお願いいたします。

    • 締切済み
    • PHP
  • バイナリファイルのアップロード

    とあるサイトのマルチパートリクエストの使用事例をそのまま使って153KB程度のGIFファイルをアップロード実験してみましたら、処理後ブラウザで「cgi-lib.pl: Request to receive too much data: 153345 bytes 」と表示されアップロードされません。表示の意味と、どうすればアップロードできるかを教えてください。 ● サンプルHTML <html> <head><title>ファイルアップロード</title></head> <body> <form method="POST" action="upload.cgi" enctype="multipart/form-data"> <input type="file" name="upload"> <input type="submit" value="送信"> </form> </body></html> ● サンプルCGI require "cgi-lib.pl"; &ReadParse; $upload = $in{"upload"}; # ファイル内容を取得 $name = $incfn{"upload"}; # ファイル名を取得 $name =~ s/\\/\//g; # パス区切り文字を/に変換 $name = substr($name,rindex($name,"/")+1); # ファイル名のみを取得 if($upload ne "" && $name ne ""){ open(FILE,">$name"); binmode(FILE); print FILE $upload; close(FILE); }

    • ベストアンサー
    • Perl
  • ファイルのアップロードができない

    CentOS+PHP 5.1.6+Apache2を利用しています。 http://www.stackasterisk.jp/tech/php/php02_07.jsp をコピーしてi18n_http_output("SJIS");を削除し、 改行コードLFで配置したのですが、何度ファイル送信をしようとしてもフォーム画面が出直すだけで、実際ファイルの保存もされていません。 一度フォーム画面を出したままにしてifとelseを消してファイル送信すると ファイル名 = ファイルサイズ = バイト ファイルタイプ = テンポラリファイルパス = アップロードできません。 と表示されます。tempnam("/dat","upload_");のパスも作ってあるのですが、もし無かったとしてもファイル名とかは出るはずなので、やはり不思議としか言い様がありません。 safeモードとかでもなく、一部のphpではファイルアップロードできているような事も聞いていますが、これも含め数種アップローダを設置してみたのですができるものとできないものがあるようです。 動いたもの:http://www.k-php.com/script/uploda/index.html 理由とか対処方法わかる方いらっしゃいましたら、ご教授願います

    • ベストアンサー
    • PHP
  • struts2 ファイル アップロード

    今、ファイルのアップロードのプログラム開発を行なっておりますが アップロードのボタンを押すとHTTPステータス500のエラーで実行ができません。 詳しい方、間違っている箇所のご指摘宜しくお願い致します。 プログラムは以下の通りです。(JAVAは一部削除しています) (JSP) <%@ page contentType="text/html; charset=UTF-8" %> <%@ page pageEncoding="Windows-31J" %> <%@taglib prefix="s" uri="/struts-tags" %> <%@taglib prefix="original" uri="/original-tags" %> <%@taglib prefix="originalJK" uri="/original-JK-tags" %> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> %@ include file="html-head.jsp" %> <script type="text/javascript"> </script> </head> <body onload> <%@ include file="HeaderTitle.jsp" %> <div class="navigation" align="right"> <originalJK:CommonLinkTag mode="2" /><br> </div> <br> <s:form enctype="multipart/form-data"> <table width="100%"> <tr> <td> <INPUT type=file name="upload"> </td> </tr> </table> <table width="100%"> <tr> <td> <s:submit value="EXCELアップロード" cssClass="form_button" action="tEST11A" method="doUpload" onclick="return confirm('アップロードしてよろしいですか。');"/> </td> </tr> </table> </s:form> </body> <html> (JAVA) @ParentPackage(value = "Original") @Results({ @Result(name = "success", value = "jsp/TEST11A.jsp"), @Result(name = "failure", value = "jsp/TEST11A.jsp") }) public class TEST11AAction extends SuperAction { private String aBtnUpdateMsg = ""; private File upload; private String uploadContentType; private String uploadFileName; public String execute() throws Exception { return "success"; } public String doUpload() throws Exception { try { // DBコネクションオープン vDb.open(); TEST11ADao vDao = new TEST11ADao(vDb); int vCount = 0; //データ存在チェック vCount = vDao.dbCntLine(); FileInputStream fis = new FileInputStream(upload); POIFSFileSystem fs = new POIFSFileSystem(fis); // ワークブック・オブジェクトの取得 HSSFWorkbook wb = new HSSFWorkbook(fs); // 総ワークシート数の取得 int sheets = wb.getNumberOfSheets(); // ワークシートごとに、データを取得 int idx = 0; for (int sheetIdx = 0; sheetIdx < sheets; sheetIdx++ ) { //コミット vDb.commit(); } finally { // DBクローズ vDb.close(); } return "success"; } public File getUpload() { return upload; } public void setUpload(File upload) { this.upload = upload; } public String getUploadContentType() { return uploadContentType; } public void setUploadContentType(String uploadContentType) { this.uploadContentType = uploadContentType; } public String getUploadFileName() { return uploadFileName; } public void setUploadFileName(String uploadFileName) { this.uploadFileName = uploadFileName; }

  • ファイルのアップロードについて

    phpのmove_uploaded_fileを使用してアップロードをしようと思うのですがアップロードが出来ません。 状況は ローカル環境のwindowsでのアップロードは行えるがlinuxでは失敗してしまいます。 move_uploaded_fileからはエラーは出力されていません そもそもmove_uploaded_fileが成功しているのになんでアップロードされていないのか分かりません。 //■HTML <form name="form1" method="post" action="upload.php" ENCTYPE="multipart/form-data"> <input type="hidden" name="MAX_FILE_SIZE" value="10485760" /> <table class="frm" id="tbl"> <tr><th>ファイル1<div id="image"></div></th> <td> 画像<input id="img_1" type="file" name="image[]" class="fname" onChange=imageChange(this); /><br /> </td></tr> <tr> <th>ファイル2<div id="image"></div></th> <td> 画像<input id="img_2" type="file" name="image[]" class="fname" onChange=imageChange(this); /><br /> </td> </tr> </table> </form> //■phpで以下のコードを実行すると oreach ($_FILES["image"]["error"] as $key => $error) { //複数のファイルをアプロード if ($error == UPLOAD_ERR_OK) { $tmp_name = $_FILES["image"]["tmp_name"][$key]; //テンポラリファイルパス $name = $_FILES["image"]["name"][$key]; //アップロードファイル名 $size = $_FILES["image"]["size"][$key]; //アップロードファイルサイズ $ermsg = $_FILES['image']['error'][$key]; //エラーメッセージ echo "アップロードファイル名".$name."\n" ; echo "アップロードファイルsize" .$size ."\n" ; echo "errmsg= .$ermsg."\n" ; // ファイルアップロード $cnt++; if ( move_uploaded_file($tmp_name, "../1/33/.$cnt."2upload.jpg ")){ //ファイルアップロード echo "アップロード成功 .$ermsg."\n" ; echo "  テンポラリファイル="$tmp_name."\n"; echo "  アップロードファイル="$dir_img."/".$cnt.UPLOAD_FILE_NAME."\n"; } else { echo 1; error_log("upload error! \n", 3, MATCHING_ERROR_LOG); exit; } } } exit; ■結果 アップロードファイル名thum6.jpg アップロードファイルsize=10104 errmsg= 0 アップロード成功   テンポラリファイル=/tmp/phpMvCzgo   アップロードファイル=../1/33/1upload.jpg アップロードファイル名 thum3.jpg アップロードファイルsize=11528 errmsg= 0 アップロード成功   テンポラリファイル=/tmp/php5Q4kIL   アップロードファイル=../1/33/2upload.jpg テンポラリの/tmpは777のため権限に問題ないです php.iniの設定 upload_max_filesize=2m post_max_size=8m memory_limit=128m 今回のアップロードファイルのサイズから問題なし file_uploads=onなので問題ありませんでした これでなにかわかる方いらっしゃいましたら教えてください。

    • ベストアンサー
    • PHP

専門家に質問してみよう