我在 Coldfusion 2016 应用程序(网站)中使用 cffile 标签将图像从用户上传到服务器。
我已被命令停止使用 cffile 并开始使用底层 java,因为它更有效。
我得到了这段代码,它显示了如何获取文件目录并使用核心 java 压缩它们。但不够聪明,无法满足我的需要。
我需要一个页面来接收简单的 POST 并将发布的文件移动到服务器上的特定目录。通常在我会使用的网站的“操作”页面上:
cffile action="upload" filefield="FieldNameFromPostedForm" destination="MyDirectoryOnServer"
谁能指点我一个方向,让我看到冷融合的引擎盖下,这样我就可以得到一些魔法,比如:
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”类型的错误返回,消息为“Stream Closed”,
我必须错误地执行 while 循环。任何java书呆子都可以告诉我要改变什么吗?