Загрузка данных из файла в Java-апплет. Много вопросов.

12
Unlock
На сайте с 01.08.2004
Offline
784
2246

Даже не знаю станет ли кто-то разбираться в таком количестве вопросов, но надеюсь хоть что-то подскажете :)

Ситуация. Есть Java-апплет в который надо загрузить данные из файла. Вот два примера:

1) http://www.chemmvp.com/aboutus/jme/endex.html

2) http://npd.riken.jp/npedia/jme_window4.php

В первом случае код для form такой:

<form  method="POST"  action="FileLoad.jsp"  name="fileForm"   enctype="multipart/form-data"  target="main1">  

<input name="file" type="file" class="STYLE3" size="36">
<input name="submit" type="submit" class="STYLE2" value="upload..." onClick="return check();">
</form>

Во втором варианте:

<form name="form_editor" id="form_editor" action="jme_window3.php" enctype="multipart/form-data" method="post">

<input type="button" value=" Submit Molecule " onclick="submitMol()" /> &nbsp;&nbsp;
Molfile = <input type="file" value="" name="molfile" />
<input type="submit" value="Upload molfile" name="submit" />
<input type="hidden" name="mol" value="" />
</form>

Вопрос первый. В первом варианте не происходит перезагрузки страницы, т.е. просто данные загружаются. Почему так? Не могу корректно сформулировать вопрос, поэтому спрощу так. Можно ли сделать html страничку и используя скрипт jme_window3.php (этот файл у меня есть) грузить данные из файла, без перезагрузки страницы?

Вопрос второй. Во втором примере есть проверка на тип файла:

function check() {

var f = document.fileForm;
var file = f.file.value;
if (file == ""||file.indexOf(".mol")==-1) {
alert("Only support *.mol file ");
return false;
}
}

Как такую же проверку сделать?

Как итог. Хочу реализовать все как в первом варианте, но у меня есть скрипт для загрузки данных из файла только для второго варианта. Не могу сообразить как это все сделать. На всякий случай привожу код скрипта который грузит данные из файла:

<?

if ( isset($_FILES['molfile']['size']) && $_FILES['molfile']['size'] > 0 ){
echo "<input type=\"hidden\" name=\"mol\" value=\"";
$file=$_FILES['molfile']['tmp_name'];
$ha=fopen($file, "r");
while( $data=fgets($ha) ){
echo $data;
}
fclose($ha);
echo "\" />\n";
}else{
echo "<input type=\"hidden\" name=\"mol\" value=\"\" />\n";
}
?>

Спасибо если хотя бы дочитали пост до конца :)

Есть желание, - тысяча способов; нет желания, - тысяча поводов! /Петр-I/.
[Удален]
#1

многабукаф =)

1) Очевидно вы имеете ввиду загрузку файла с клиентской машины на сервер без перезагрузки страницы - это сложно, но можно, используя iframe, в гугле легко найдете по вопросу "фоновая загрузка файлов". Если вы имеете ввиду просто вызов скрипта без перезагрузки, когда уже есть файл на сервере - то очевидное решение это ajax. Для фреймворков типа jQuery и Prototype есть уже готовые решения, там и для аякса удобненько, и фоновая загрузка файлов тоже есть.

2) Ну собсно сделайте такую же проверку на стороне принимающего файл скрипта. У вас сложность в синтаксисе?


if (strrchr($filename,".")!=='.mol')
//тип файла не подходит
Unlock
На сайте с 01.08.2004
Offline
784
#2

neolord, я не могу понять почему во втором примере данные из файла загружаются без перезагрузки страницы.

P.S. У меня каша в голове по этой теме, извиняюсь если что-то формулирую не корректно.

[Удален]
#3

я же вам написал - это фоновая загрузка файла через iframe. Скопируйте эту фразу в гугл и найдете как это делается =)

[Удален]
#4

непосредственно к ява-апплету тема отношение имеет опосредованное :) neolord правильно говорит

T.R.O.N
На сайте с 18.05.2004
Offline
314
#5

Unlock,

Каши становится все больше. Давайте по проядку.

Имее страницу с апплетом и формой отправки файла на сервер. Нужно чтобы файл загрузился в апплет. Правильно?

1. Форма отправляетфайл. Варианта 2. Ajax или скрытый IFRAME.

2. скрипт на стороне сервера получает файл и записывает его.

3. апплет должен как-то узнать о том, что нужно загрузить данные из файла, путь к нему и прочее...

4. Апплет грузит данные с сервера.

На каком из этапов у Вас проблема?

От воздержания пока никто не умер. Хотя никто и не родился! Prototype.js был написан теми, кто не знает JavaScript, для тех, кто не знает JavaScript (Richard Cornford)
Unlock
На сайте с 01.08.2004
Offline
784
#6

neolord, спасибо за подсказки, стало яснее :) Если подскажете еще куда конкретно вставить строку с проверкой типа файла, в том примере что я в первом посте привел, буду признателен. В первом примере через javascript реализовано, но я не смог воспроизвести. Да и еще хотелось бы сделать ограничение на объем загружаемого файла. Те файлы что реально имеют отношеник к моему случая не могут быть больше 10 Кб. И последний вопрос. Не зальют мне гадость какую-нибудь таким образом?

T.R.O.N, пришел к выводу что проще не заморачиваться с перезагрузкой страницы. Не так уж это и плохо :) Но все равно спасибо за попытку помочь.

T.R.O.N
На сайте с 18.05.2004
Offline
314
#7
Unlock:
Не зальют мне гадость какую-нибудь таким образом?

как я понимаю, файл потом обрабатывается апплетом, поэтому все зависит от того, что он с ним будет делать. На счет вирусов - точно нет, а на счет "детских игр" - точно будут.

Unlock
На сайте с 01.08.2004
Offline
784
#8

T.R.O.N, апплет "сожрет" только определенный тип данных. Если залить другой тип файла, то ничего не произойдет в принципе. Тут даже несколько по другому все обстоит. Сам апплет файлы читать не может. Скрипт по сути открывает файл, берет оттуда данные и грузит в апплет эти данные. Если данные не корректны, то апплет выдаст ошибку и все. Если коротко и четко - апплет этот просто способ ввода данных (для поиска) в графическом виде.

[Удален]
#9
Unlock:
neolordЕсли подскажете еще куда конкретно вставить строку с проверкой типа файла.

я ж привел пример кода. там одна строчка. вставлять в скрипт, принимающий файл (action формы или скрипт, вызываемый аяксом).

Размер файла определяется функцией filesize, при загрузке через форму кроме того доступен из $_FILES['имя инпута на форме для файла']['size'] кажется.

BR
На сайте с 28.06.2008
Offline
75
#10
Unlock:
Сам апплет файлы читать не может. Скрипт по сути открывает файл, берет оттуда данные и грузит в апплет эти данные.

- объясняю:

1. из HTML-формы файл грузится на сервер (там его ловит PHP или JSP скрипт, указанный в атрибуте ACTION-формы)

2. при нажатии на кнопочку в апплете (как в первом примере) или при вызове JavaScript-а, дергающего внутренний метод апплета (как во втором примере), апплет коннектится с сервером и подгружает файл, предварительно сохраненный на сервере

- теперь вопрос: чего Вы собственно хотите добиться? (к сожалению, в связи с отсутствием *.mol файла провести эксперимент для лучшего понимания о какой "перезагрузке страницы" идет речь, не удалось). Не подумайте что издеваюсь, честно не могу понять в чем именно проблема :)

размещение сайтов (http://www.brim.ru)
12

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий