Ядро Coldfusion Ява вместо Cffile
Я использую тег cffile в приложении Coldfusion 2016 (веб-сайт) для загрузки изображений с пользователя на сервер.
Мне приказали прекратить использовать cffile и начать использовать базовый Java вместо этого, потому что это более эффективно.
мне дали этот код, который показывает, как взять dir файлов и заархивировать их ядром java. Но не был достаточно умен, чтобы использовать его для своих нужд.
Мне нужна страница, чтобы получить простой POST и переместить файл, размещенный в определенный каталог на сервере. обычно на странице "действий" веб-сайта я бы использовал:
cffile action="upload" filefield="FieldNameFromPostedForm" destination="MyDirectoryOnServer"
Кто-нибудь может указать мне направление, чтобы увидеть под капюшоном Coldfusion, чтобы я мог в конечном итоге с некоторой магией, как:
FileOutputStream = createobject("java", "java.io.FileOutputStream");
в функции.
Спасибо!
Отчет о проделанной работе:
Я ближе к тому, что мне сказали делать. файл записывается на сервер, но впоследствии я получаю сообщение об ошибке, поэтому мне не хватает части головоломки
<cfscript>
function bj_script(source, server_dest_Path) {
try {
FileOutputStream = createobject("java", "java.io.FileOutputStream");
BufferedOutputStream = createobject("java", "java.io.BufferedOutputStream");
FileInputStream = createobject("java", "java.io.FileInputStream");
BufferedInputStream = createobject("java","java.io.BufferedInputStream");
the_file = createobject("java","java.io.File");
the_file.init(source);
FileInputStream.init(the_file);
BufferedInputStream.init(FileInputStream);
FileOutputStream.init(server_dest_Path);
BufferedOutputStream.init(FileOutputStream);
thisbyte = 0;
while (thisbyte neq -1){
thisbyte = BufferedInputStream.read();
if (thisbyte neq -1){
BufferedOutputStream.write(thisbyte);
}
}
FileOutputStream.close();
BufferedOutputStream.close();
return true;
}
catch(Any exception) {
return exception;
}
}
</cfscript>
<form method="post" enctype="multipart/form-data">
<input type="File" name="test"><br>
<input type="Submit"><br>
</form>
<cfif request_method is "post">
<cfset ccc = bj_script(form.test, "C:\inetpub\wwwroot\mywebsite\temp_img\blah.jpg") />
</cfif>
после изображения в моих тестовых загрузках я получаю сообщение об ошибке типа " java.io.IOException" с сообщением "Поток закрыт"
я должен делать цикл while неправильно. может ява-ботаник подскажет что поменять?
1 ответ
Вот кое-что, что я написал несколько лет назад, чтобы сделать почти такую же вещь с помощью ColdFusion ResultSet. Должен послужить приличным учебником по подключению к классу Java из CF и записи файлов.
https://cfprimer.blogspot.com/2009/01/coldfusion-fast-query-to-file-export.html
Мне приказали прекратить использовать cffile и начать использовать базовый Java вместо этого, потому что это более эффективно.
Возможно, стоит указать, что CFFile также использует базовую Java для записи файла?