我可以使用PUT和HttpUrlConnection将图像发送到我的共享主机帐户吗?

时间:2012-04-06 18:33:44

标签: java file upload httpurlconnection

有点难以置信Java让客户端变得如此简单。我确信我将不得不将图像发布到服务器文件以首先清理它,但我也想让任何人不要访问这样的服务器文件(并且想一点)并最终用图片向我发送垃圾邮件。我需要严格的流程,不会被最终用户篡改。

从我所读到的内容中,如果我理解正确,PUT应该是我需要的。我签名的ja会从客户端向服务器发送与站点相关的信息图像,而不会暴露我的任何FTP信息或泄露可能受到攻击的上传文件。对于PUT,我是否正确掌握了我的问题。它会通过http在我的帐户上放置一个图像而无需额外的处理过程吗?

顺便说一下,我如何将这个片段用于图像?

URLConnection urlconnection=null;
try{
File file = new File("C:/test.txt");
URL url = new URL("http://192.168.5.27/Test/test.txt");
urlconnection = url.openConnection();
urlconnection.setDoOutput(true);
urlconnection.setDoInput(true);

if (urlconnection instanceof HttpURLConnection) {
try {
((HttpURLConnection)urlconnection).setRequestMethod("PUT");
((HttpURLConnection)urlconnection).setRequestProperty("Content-type", "text/html");
((HttpURLConnection)urlconnection).connect();


} catch (ProtocolException e) {
 // TODO Auto-generated catch block
 e.printStackTrace();
}
}


BufferedOutputStream bos = new BufferedOutputStream(urlconnection
 .getOutputStream());
BufferedInputStream bis = new BufferedInputStream(new FileInputStream(
 file));
int i;
// read byte by byte until end of stream
while ((i = bis.read()) >0) {
 bos.write(i);
}
System.out.println(((HttpURLConnection)urlconnection).getResponseMessage());
}
catch(Exception e)
{
e.printStackTrace();
}
try {

InputStream inputStream;
int responseCode=((HttpURLConnection)urlconnection).getResponseCode();
if ((responseCode>= 200) &&(responseCode<=202) ) {
inputStream = ((HttpURLConnection)urlconnection).getInputStream();
int j;
while ((j = inputStream.read()) >0) {
 System.out.println(j);
}

} else {
inputStream = ((HttpURLConnection)urlconnection).getErrorStream();
}
((HttpURLConnection)urlconnection).disconnect();

} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

1 个答案:

答案 0 :(得分:0)

没有。绝大多数Web服务器都没有像您想象的那样实现PUT命令。 PUT命令通常在WebDAV协议或自定义REST API之外无用。