将本地图片或者网上图片用post方式上传到图片服务器

package com.bj95ol.test;  
  
import java.io.BufferedReader;  
import java.io.File;  
import java.io.FileNotFoundException;  
import java.io.FileOutputStream;  
import java.io.IOException;  
import java.io.InputStream;  
import java.io.InputStreamReader;  
import java.io.OutputStreamWriter;  
import java.io.PrintWriter;  
import java.net.HttpURLConnection;  
import java.net.MalformedURLException;  
import java.net.URL;  
  
import javax.servlet.ServletInputStream;  
import javax.servlet.http.HttpServletRequest;  
  
import sun.misc.BASE64Decoder;  
import sun.misc.BASE64Encoder;  
  
public class SendImgToWeb {  
    /** 
     * 获得网络图片地址。或者图片地址 
     * @param url 
     * @return 
     */  
    public String getContentFromWeb(String url)  
    {  
        String filecontent="";  
        InputStream is=null;  
        BASE64Encoder base=new BASE64Encoder();  
        if(url.startsWith("http"))  
        {  
            try {  
                HttpURLConnection urlconn=(HttpURLConnection)new URL(url).openConnection();  
                is=urlconn.getInputStream();  
            } catch (MalformedURLException e) {  
                // TODO Auto-generated catch block  
                e.printStackTrace();  
            } catch (IOException e) {  
                // TODO Auto-generated catch block  
                e.printStackTrace();  
            }  
        }  
        int n=0;  
        byte[] b=null;  
        try {  
            while((n=is.available())>0)  
            {  
                n=is.read(b);  
                if(n==-1)break;  
                filecontent=filecontent+base.encode(b);  
                  
            }  
            is.close();  
        } catch (IOException e) {  
            // TODO Auto-generated catch block  
            e.printStackTrace();  
        }  
        return filecontent;  
    }  
      
    /** 
     * 将图片内容用post方式发送到url中 
     * @param url 
     * @param postcontent 
     */  
      
    public void sendImgbyPost(String url,String postcontent)  
    {  
        try {  
            HttpURLConnection huc=(HttpURLConnection)new URL(url).openConnection();  
            huc.setDoInput(true);  
            huc.setDoOutput(true);  
            huc.setRequestMethod("POST");  
              
            PrintWriter pw=new PrintWriter(new OutputStreamWriter(huc.getOutputStream()));  
            pw.print(postcontent);  
            pw.close();  
              
            BufferedReader br=new BufferedReader(new InputStreamReader(huc.getInputStream()));  
            String content="";  
            String line=br.readLine();  
            while(line!=null)  
            {  
                content=content+line;  
                line=br.readLine();  
                  
            }  
              
        } catch (MalformedURLException e) {  
            // TODO Auto-generated catch block  
            e.printStackTrace();  
        } catch (IOException e) {  
            // TODO Auto-generated catch block  
            e.printStackTrace();  
        }  
          
    }  
    /** 
     * 在服务器端获取发送过来的内容 
     * @param request 
     * @return 
     */  
    public String receiveContent(HttpServletRequest request)  
    {  
        int a = 0;  
         byte[] b = new byte[4096];  
        String result="";  
        try  
        {  
         ServletInputStream sis=request.getInputStream();  
        int line=sis.readLine(b, 0, b.length);  
        while(line!=-1)  
        {  
        result=result+new String(b,0,line);  
        line=sis.readLine(b, 0, b.length);  
        }  
        }  
        catch(Exception e)  
        {  
        e.printStackTrace();  
        }  
        return  result;  
    }  
      
    /** 
     * 将接受过来的信息生成文件 
     * @param request 
     * @param filename 
     */  
    public void createFile(HttpServletRequest request,String filename)  
    {  
        File file=new File(filename);  
        try {  
            FileOutputStream fos=new FileOutputStream(file);  
            String content=receiveContent(request);  
            BASE64Decoder base=new BASE64Decoder();  
            byte[] b=base.decodeBuffer(content);  
            fos.write(b);  
            fos.close();  
              
        } catch (FileNotFoundException e) {  
            // TODO Auto-generated catch block  
            e.printStackTrace();  
        } catch (IOException e) {  
            // TODO Auto-generated catch block  
            e.printStackTrace();  
        }  
          
    }  
  
}  

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Java可以使用常见的HTTP客户端库(如Apache HttpClient或OkHttp)来上传本地图片到云服务器。以下是一些基本的步骤: 1. 创建一个HTTP客户端实例,并设置连接参数。 2. 创建一个HTTP POST请求,并将文件作为请求实体发送。 3. 从响应中读取服务器的响应状态码和消息。 4. 关闭HTTP客户端实例。 以下是一个示例代码,使用Apache HttpClient库上传本地文件到云服务器: ``` import org.apache.http.HttpEntity; import org.apache.http.HttpResponse; import org.apache.http.client.HttpClient; import org.apache.http.client.methods.HttpPost; import org.apache.http.entity.mime.MultipartEntityBuilder; import org.apache.http.impl.client.HttpClients; import org.apache.http.util.EntityUtils; import java.io.File; public class ImageUploader { public static void main(String[] args) throws Exception { // 本地文件路径 String localFilePath = "path/to/local/image.jpg"; // 云服务器URL String serverUrl = "http://server.com/upload"; // 创建HTTP客户端实例 HttpClient httpclient = HttpClients.createDefault(); // 创建HTTP POST请求 HttpPost httppost = new HttpPost(serverUrl); // 创建HTTP请求实体 MultipartEntityBuilder builder = MultipartEntityBuilder.create(); builder.addBinaryBody("file", new File(localFilePath)); // 设置HTTP请求实体 HttpEntity reqEntity = builder.build(); httppost.setEntity(reqEntity); // 发送HTTP请求,并获取响应 HttpResponse response = httpclient.execute(httppost); HttpEntity resEntity = response.getEntity(); // 从响应中读取状态码和消息 int statusCode = response.getStatusLine().getStatusCode(); String message = EntityUtils.toString(resEntity); // 关闭HTTP客户端实例 httpclient.close(); } } ``` 在上面的示例中,我们使用了Apache HttpClient库的MultipartEntityBuilder类来构建HTTP请求实体,并将本地文件添加到请求中。在发送HTTP请求后,我们从响应中读取了状态码和消息,并关闭了HTTP客户端实例。请注意,这只是一个基本的示例,实际情况可能需要根据具体的云服务器和业务需求进行调整。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值