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<String, String> 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<String, String> 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; }
相关推荐
Java模拟post请求传上传文件(文件流做参)、下载文件、好使的。
框架主要包括:Get请求、Post请求、文件上传、文件下载。效果图及讲解见:https://blog.csdn.net/ahuyangdong/article/details/82760382。github源码:https://github.com/ahuyangdong/RetrofitFrame
Qt之 Post方法上传图片到服务器两种方式Base64流和File
post提交,图片以文件流形式上传并保存到数据库,读取的时候再以文件流的形式读取并显示在前端页面
Http post请求,接口要求同时上传文件和参数的代码实现
说明:文件上传使用的时POST请求,通常把要上传的数据保存在请求体中。本文介绍如何不借助第三方框架实现iOS开发中得文件上传。 由于过程较为复杂,因此本文只贴出部分关键代码。 主控制器的关键代码: 代码如下:...
QT post getQT通过HTTP实现图片实时上传和下载并显示,
Qt实现简单的Http Post数据传输。内含说明文档,和我写这个工程时的参考资料链接。我这里是可以使用的。如果你下载不能使用可以看一下是不是软件环境的问题。愿和大家一起进步。
* PHP与Web页面交互 -----文件上传和下载 课程内容 文件上传 文件下载 一、文件上传 文件上传从本质上讲,就是将... 一、上传文件 <form enctype="multipart/form-data" method="post" action=“a.php" name="myform
* PHP与Web页面交互 -----文件上传和下载 课程内容 文件上传 文件下载 一、文件上传 文件上传从本质上讲,就是将... 一、上传文件 <form enctype="multipart/form-data" method="post" action=“a.php" name="myform
为了能上传文件,必须将表单的method设置为POST,并将enctype设置为multipart/form-data。只有在这样的情况下,浏览器才会把用户选择的文件以二进制数据发送给服务器。 一旦设置了enctype为multipart/form-data,...
HTML5 postMessage+iframe实现文件跨域异步上传 http://blog.csdn.net/jiangsyace/article/details/43858443
使用Objective-C通过Http协议实现文件的上传与下载,GET与POST传递参数,上传与下载进度检测
用API发送POST数据,支持二进制,即:可以用POST像网站发送图片数据,经测试可行
【最新】C++ http post form_data传文件源码,【最新】C++ http post form_data传文件源码,【最新】C++ http post form_data传文件源码
主要介绍了C# http系列之以form-data方式上传多个文件及键值对集合到远程服务器,需要的朋友可以参考下
创建一个HTML表单用于上传文件。在表单中使用enctype="multipart/form-data"属性来指定文件上传的编码类型 文件下载: 1.配置文件下载的控制器(Controller): 创建一个控制器来处理文件下载的请求。控制器可以使用...
httpclient通过POST来上传文件,而不是通过流的形式,并在服务端进行解析(通过httpmime.jar来操作)
/// 上传文件(按照文件名称上传,支持断点) /// /// 待上传文件全路径 /// 上传时的流量控制,文件较大时,用于切割文件上传 /// 错误信息 /// 成功或者失败 public static bool UpLoadFile(string ...
主要为大家详细介绍了SpringCloud使用Feign文件上传、下载功能,具有一定的参考价值,感兴趣的小伙伴们可以参考一下