java post 文件流_post 上传下载文件流

import java.net.HttpURLConnection;

import java.net.MalformedURLException;

import java.net.URI;

import java.net.URISyntaxException;

import java.net.URL;

import java.util.Map;

import org.apache.http.HttpResponse;

import org.apache.http.client.methods.HttpGet;

import org.apache.http.impl.client.DefaultHttpClient;

import org.apache.http.params.BasicHttpParams;

import org.apache.http.params.HttpConnectionParams;

import org.apache.http.params.HttpParams;

public class HttpRequestUtils {

public static HttpResponse getHttpResponse(String url, Map params) throws Exception{

HttpParams httpParameters = new BasicHttpParams();

HttpConnectionParams.setConnectionTimeout(httpParameters, 2 * 60 * 100);

HttpConnectionParams.setSoTimeout(httpParameters, 2 * 60 * 100);

DefaultHttpClient client = new DefaultHttpClient(httpParameters);

HttpGet httpGet = new HttpGet(new URI(url));

for(Map.Entry entry : params.entrySet()){

httpGet.setHeader(entry.getKey(), entry.getValue());

}

return client.execute(httpGet);

}

public static HttpURLConnection getUrlConnection(String url, int bufferSize) throws Exception{

URL target = new URL(url);

HttpURLConnection conn = (HttpURLConnection) target.openConnection();

conn.setConnectTimeout(30000);

conn.setReadTimeout(30000);

conn.setDoOutput(true);

conn.setDoInput(true);

conn.setUseCaches(false);

conn.setRequestMethod("POST");

conn.setRequestProperty("connection", "Keep-Alive");

conn.setChunkedStreamingMode(bufferSize);

conn.setRequestProperty("user-agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)");

conn.setRequestProperty("Charsert", "UTF-8");

conn.setRequestProperty("contentType", "UTF-8");

conn.setRequestProperty("timenow", String.valueOf(System.currentTimeMillis()));

return conn;

}

}

上传文件流关键代码:

private static void uploadFile() throws Exception

{

//BUFFER_SIZE = 16 * 1024 ;

File file = new java.io.File("D:/workbook.xlsx");

SimpleDateFormat dateFormat=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

HttpURLConnection conn=HttpRequestUtils.getUrlConnection("http://localhost:7080/test/FileUploadAndDownloadServlet", Constants.BUFFER_SIZE);

conn.setRequestProperty("type","1");

conn.setRequestProperty("source", "3486123"); //文件目录

conn.setRequestProperty("range", String.valueOf(0));

conn.setRequestProperty("filename", "dison.xlsx"); //文件名称

conn.setRequestProperty("totalsize", String.valueOf(file.length())); //文件大小

conn.setRequestProperty("tousername", "dison"); //接收者

conn.setRequestProperty("fromusername", "dison1");//发送者

RandomAccessFile randomAccessFile=new RandomAccessFile(file, "rw"); //文件流key

OutputStream out = new DataOutputStream(conn.getOutputStream());

int j=0;

byte[] buf = new byte[Constants.BUFFER_SIZE];

int nRead=0;

try {

randomAccessFile.seek(Long.valueOf(0));//设置文件指针

while((nRead=randomAccessFile.read(buf,0,Constants.BUFFER_SIZE)) > 0)

{

out.write(buf,0,nRead);

j += nRead;

}

out.close();

randomAccessFile.close();

} catch (NumberFormatException e) {

e.printStackTrace();

} catch (IOException e) {

e.printStackTrace();

}finally{

try {

randomAccessFile.close();

} catch (IOException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

out.flush();

out.close();

// 定义BufferedReader输入流来读取URL的响应

BufferedReader reader = new BufferedReader(new InputStreamReader(conn.getInputStream(),"utf-8"));

String line = null;

while ((line = reader.readLine()) != null) {

System.out.println(line);

}

}

接收文件流 (关键代码)部分代码:

主要逻辑:

1.首先确定你创建的目录是否存在。没有就创建

2.通过文件流的key读取流,创建文件

RandomAccessFile randomAccessFile;

try {

randomAccessFile = new RandomAccessFile(destfile, "rw");

} catch (FileNotFoundException e) {

logger.error(e);

fileUploadResult = new FileUploadResult(false,FileBizCodeConstants.FILEID_UNEXIST, "文件未找到");

return fileUploadResult;

}

byte[] buf = new byte[FileBizCodeConstants.BUFFER_SIZE];

int nRead;

int stu=0;

randomAccessFile.seek(Long.valueOf(range));//设置文件指针

while((nRead=is.read(buf,0,FileBizCodeConstants.BUFFER_SIZE)) > 0&&stu==0)

{

randomAccessFile.write(buf,0,nRead);

l += nRead;

}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Java后端可以使用HttpClient库来实现Post提交文件的功能,服务端可以使用Spring框架来接收文件。 首先,我们需要在Java后端使用HttpClient库来实现Post提交文件的功能。示例代码如下: ```java CloseableHttpClient httpClient = HttpClients.createDefault(); HttpPost httpPost = new HttpPost(url); MultipartEntityBuilder builder = MultipartEntityBuilder.create(); builder.addBinaryBody("file", file, ContentType.APPLICATION_OCTET_STREAM, fileName); HttpEntity multipart = builder.build(); httpPost.setEntity(multipart); CloseableHttpResponse response = httpClient.execute(httpPost); ``` 其中,`url`是要提交到的服务端地址,`file`是要提交的文件,`fileName`是文件名。 接下来,我们需要在服务端使用Spring框架来接收文件。示例代码如下: ```java @PostMapping("/upload") public String uploadFile(@RequestParam("file") MultipartFile file) throws IOException { byte[] bytes = file.getBytes(); // 处理文件 return "success"; } ``` 其中,`/upload`是服务端接收请求的地址,`file`是要接收的文件。 注意,服务端需要添加`commons-fileupload`和`commons-io`两个依赖库才能使用`MultipartFile`类型。另外,服务端还需要在`application.properties`文件中配置文件上传的相关参数,如下所示: ``` spring.servlet.multipart.max-file-size=10MB spring.servlet.multipart.max-request-size=10MB ``` 以上就是Java后端HttpClient Post提交文件及服务端接收文件的实现方式。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值