我是java新手。我对此了解不多。我刚学java。 我正在开发一个网络应用程序。其中我有一个选项下载图像。如果用户单击,他应该能够从服务器下载图像到客户端(例如位置 c://)。
我已经实现了这段代码::
import java.awt.Image;
import java.io.BufferedInputStream;
import java.io.ByteArrayOutputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
import javax.imageio.ImageIO;
public class DownloadingImages{
public DownloadingImages() {}
public void download(String name) throws MalformedURLException, IOException{
Image image = null;
try {
//URL url = new URL("file:///E:/myproject/build/web/images/Webcam.jpg");
String spath="http://localhost:5051/marketpoint/images/";
String cpath="C:\\";
spath = spath + name ;
cpath = cpath + name ;
System.out.println("FULL path::: "+spath);
URL url = new URL(spath);
InputStream in = new BufferedInputStream(url.openStream());
ByteArrayOutputStream out = new ByteArrayOutputStream();
byte[] buf = new byte[1024];
int n = 0;
while (-1!=(n=in.read(buf)))
{
out.write(buf, 0, n);
}
out.close();
in.close();
byte[] response = out.toByteArray();
FileOutputStream fos = new FileOutputStream(cpath);
fos.write(response);
fos.close();
} catch (IOException e) {
}
}
}
Here
name = name of image thta client wants to download.
这里的问题是图像被下载到服务器端。在 c://。谁能告诉我哪里错了。
为此,我使用 net beans 作为编辑器,Apache tomcat 作为服务器。客户端和服务器都通过5051端口连接。客户端要从服务器下载的图像是简单的jpg图像。有人会帮助我摆脱这个问题吗?
最佳答案
如果文件下载到 C:\,那么当您打开 FileOutputStream
时,这就是您的 cpath
变量。这意味着您的 name
变量将作为空字符串传入。尝试放入一些日志语句(或者更好的是,使用 netbeans 调试器!)来查看代码执行时变量保存的值。
编辑:我想我现在明白了这个问题。您将其作为 servlet 或类似的东西运行。这意味着您的代码在服务器上执行,而不是在客户端上执行。如果您想将文件下载到客户端上的特定路径,则必须使用 Applet
或在客户端运行的类似工具。或者,您可以在 HTTP 响应中返回文件,用户的浏览器将询问他们保存文件的位置。不过,此时用户可以自己在浏览器中导航到 jpg。
如果这不能回答您的问题,您可能需要更详细地解释您的用例。
关于java代码从服务器下载图像到客户端,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9157501/