上传文件时有时出现这两个异常,导致文件上传失败,大神求指导????

qq_23064987 2015-11-12 04:54:52
11-12 16:10:16.134: W/System.err(3010): java.net.SocketTimeoutException
11-12 16:10:16.144: W/System.err(3010): at java.net.PlainSocketImpl.read(PlainSocketImpl.java:491)
11-12 16:10:16.144: W/System.err(3010): at java.net.PlainSocketImpl.access$000(PlainSocketImpl.java:46)
11-12 16:10:16.144: W/System.err(3010): at java.net.PlainSocketImpl$PlainSocketInputStream.read(PlainSocketImpl.java:240)
11-12 16:10:16.144: W/System.err(3010): at java.io.InputStream.read(InputStream.java:162)
11-12 16:10:16.144: W/System.err(3010): at java.io.BufferedInputStream.fillbuf(BufferedInputStream.java:142)
11-12 16:10:16.144: W/System.err(3010): at java.io.BufferedInputStream.read(BufferedInputStream.java:227)
11-12 16:10:16.144: W/System.err(3010): at com.android.okhttp.internal.Util.readAsciiLine(Util.java:316)
11-12 16:10:16.144: W/System.err(3010): at com.android.okhttp.internal.http.RawHeaders.fromBytes(RawHeaders.java:308)
11-12 16:10:16.144: W/System.err(3010): at com.android.okhttp.internal.http.HttpTransport.readResponseHeaders(HttpTransport.java:135)
11-12 16:10:16.144: W/System.err(3010): at com.android.okhttp.internal.http.HttpEngine.readResponse(HttpEngine.java:644)
11-12 16:10:16.144: W/System.err(3010): at com.android.okhttp.internal.http.HttpURLConnectionImpl.execute(HttpURLConnectionImpl.java:347)
11-12 16:10:16.144: W/System.err(3010): at com.android.okhttp.internal.http.HttpURLConnectionImpl.getResponse(HttpURLConnectionImpl.java:296)
11-12 16:10:16.144: W/System.err(3010): at com.android.okhttp.internal.http.HttpURLConnectionImpl.getInputStream(HttpURLConnectionImpl.java:179)
11-12 16:10:16.144: W/System.err(3010): at com.apical.util.formUploadutil.formUpload(formUploadutil.java:107)


11-12 16:30:16.585: W/System.err(4737): java.net.SocketException: sendto failed: EPIPE (Broken pipe)
11-12 16:30:16.625: W/System.err(4737): at libcore.io.IoBridge.maybeThrowAfterSendto(IoBridge.java:499)
11-12 16:30:16.625: W/System.err(4737): at libcore.io.IoBridge.sendto(IoBridge.java:468)
11-12 16:30:16.625: W/System.err(4737): at java.net.PlainSocketImpl.write(PlainSocketImpl.java:507)
11-12 16:30:16.625: W/System.err(4737): at java.net.PlainSocketImpl.access$100(PlainSocketImpl.java:46)
11-12 16:30:16.625: W/System.err(4737): at java.net.PlainSocketImpl$PlainSocketOutputStream.write(PlainSocketImpl.java:269)
11-12 16:30:16.625: W/System.err(4737): at java.io.BufferedOutputStream.write(BufferedOutputStream.java:131)
11-12 16:30:16.625: W/System.err(4737): at java.io.ByteArrayOutputStream.writeTo(ByteArrayOutputStream.java:231)
11-12 16:30:16.625: W/System.err(4737): at com.android.okhttp.internal.http.RetryableOutputStream.writeToSocket(RetryableOutputStream.java:73)
11-12 16:30:16.625: W/System.err(4737): at com.android.okhttp.internal.http.HttpTransport.writeRequestBody(HttpTransport.java:112)
11-12 16:30:16.625: W/System.err(4737): at com.android.okhttp.internal.http.HttpEngine.readResponse(HttpEngine.java:638)
11-12 16:30:16.625: W/System.err(4737): at com.android.okhttp.internal.http.HttpURLConnectionImpl.execute(HttpURLConnectionImpl.java:347)
11-12 16:30:16.625: W/System.err(4737): at com.android.okhttp.internal.http.HttpURLConnectionImpl.getResponse(HttpURLConnectionImpl.java:296)
11-12 16:30:16.625: W/System.err(4737): at com.android.okhttp.internal.http.HttpURLConnectionImpl.getInputStream(HttpURLConnectionImpl.java:179)
11-12 16:30:16.625: W/System.err(4737): at com.apical.util.formUploadutil.formUpload(formUploadutil.java:107)
11-12 16:30:16.625: W/System.err(4737): at com.apical.carnetwork.CarNetworkService$6$1.run(CarNetworkService.java:706)
11-12 16:30:16.625: W/System.err(4737): at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
...全文
638 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
qq_23064987 2015-11-12
  • 打赏
  • 举报
回复
引用 1 楼 小三余的回复:
上个代码看看撒
<br /> <br /> String pic_name = UDPCmd.devideID + "_"<br /> + System.currentTimeMillis()<br /> + ".jpg";<br /> String urlStr = "http://111.4.117.99:8080/imgs/upimg?actname=up&imgname="<br /> + pic_name;<br /> Map<String, String> textMap = new HashMap<String, String>();<br /> textMap.put("name", "testname");<br /> Map<String, String> fileMap = new HashMap<String, String>();<br /> fileMap.put("userfile", pic_path);<br /> // 上传图片<br /> String result = formUploadutil.formUpload(<br /> urlStr, textMap, fileMap);<br /> <br /> <br /> <br /> 这是上传文件的代码<br /> public class formUploadutil {<br /> <br /> public  static String formUpload(String urlStr, Map<String, String> textMap,Map<String, String> fileMap) {<br /> String res = "";<br /> HttpURLConnection conn = null;<br /> String BOUNDARY = "---------------------------123821742118716"; //boundary就是request头和上传文件内容的分隔符<br /> <br /> try {<br /> URL url = new URL(urlStr);<br /> conn = (HttpURLConnection) url.openConnection();<br /> conn.setConnectTimeout(2*60000);<br /> conn.setReadTimeout(2*60000);<br /> conn.setDoOutput(true);<br /> conn.setDoInput(true);<br /> conn.setUseCaches(false);<br /> conn.setRequestMethod("POST");<br /> conn.setRequestProperty("Connection", "Keep-Alive");<br /> // conn.setRequestProperty("User-Agent",<br /> // "Mozilla/5.0 (Windows; U; Windows NT 6.1; zh-CN; rv:1.9.2.6)");<br /> conn.setRequestProperty("Content-Type","multipart/form-data; boundary=" + BOUNDARY);<br /> OutputStream out = new DataOutputStream(conn.getOutputStream());<br /> // text<br /> if (textMap != null) {<br /> StringBuffer strBuf = new StringBuffer();<br /> Iterator iter = textMap.entrySet().iterator();<br /> while (iter.hasNext()) {<br /> Map.Entry entry = (Map.Entry) iter.next();<br /> String inputName = (String) entry.getKey();<br /> String inputValue = (String) entry.getValue();<br /> if (inputValue == null) {<br /> continue;<br /> }<br /> strBuf.append("\r\n").append("--").append(BOUNDARY).append("\r\n");<br /> strBuf.append("Content-Disposition: form-data; name=\""+ inputName + "\"\r\n");//\r\n<br /> strBuf.append(inputValue);<br /> }<br /> out.write(strBuf.toString().getBytes());<br /> }<br /> <br /> // file<br /> if (fileMap != null) {<br /> Iterator iter = fileMap.entrySet().iterator();<br /> while (iter.hasNext()) {<br /> Map.Entry entry = (Map.Entry) iter.next();<br /> String inputName = (String) entry.getKey();<br /> String inputValue = (String) entry.getValue();<br /> Log.i("web","获取的路径: "+inputValue);<br /> if (inputValue == null) {<br /> continue;<br /> }<br /> File file = new File(inputValue);<br /> String filename = file.getName();<br /> String contentType ="image/jpeg";<br /> if (filename.endsWith(".png")) {<br /> contentType = "image/png";<br /> }<br /> if (contentType == null || contentType.equals("")) {<br /> contentType = "application/octet-stream";<br /> }<br /> <br /> StringBuffer strBuf = new StringBuffer();<br /> strBuf.append("\r\n").append("--").append(BOUNDARY).append(<br /> "\r\n");<br /> strBuf.append("Content-Disposition: form-data; name=\""<br /> + inputName + "\"; filename=\"" + filename<br /> + "\"\r\n");<br /> strBuf.append("Content-Type:" + contentType + "\r\n\r\n");<br /> <br /> out.write(strBuf.toString().getBytes());<br /> <br /> DataInputStream in = new DataInputStream(<br /> new FileInputStream(file));<br /> int bytes = 0;<br /> byte[] bufferOut = new byte[1024];<br /> while ((bytes = in.read(bufferOut)) != -1) {<br /> out.write(bufferOut, 0, bytes);<br /> }<br /> in.close();<br /> }<br /> }<br /> <br /> byte[] endData = ("\r\n--" + BOUNDARY + "--\r\n").getBytes();<br /> out.write(endData);<br /> out.flush();<br /> out.close();<br /> <br /> // 读取返回数据<br /> StringBuffer strBuf = new StringBuffer();<br /> BufferedReader reader = new BufferedReader(new InputStreamReader(<br /> conn.getInputStream()));<br /> String line = null;<br /> while ((line = reader.readLine()) != null) {<br /> strBuf.append(line).append("\n");<br /> }<br /> res = strBuf.toString();<br /> reader.close();<br /> reader = null;<br /> } catch (Exception e) {<br /> Log.i("connection------------>>>", "发送POST请求出错。" + urlStr);<br /> System.out.println("发送POST请求出错。" + urlStr);<br /> e.printStackTrace();<br /> } finally {<br /> if (conn != null) {<br /> conn.disconnect();<br /> Log.i("connection------------>>>", "发送POST请求出错。" + "断开连接");<br /> conn = null;<br /> }<br /> }<br /> return res;<br /> }<br /> }
qq_23064987 2015-11-12
  • 打赏
  • 举报
回复
会不会是服务器处理不过来的原因。
qq_23064987 2015-11-12
  • 打赏
  • 举报
回复
String pic_name = UDPCmd.devideID + "_" + System.currentTimeMillis() + ".jpg"; String urlStr = "http://111.4.117.99:8080/imgs/upimg?actname=up&imgname=" + pic_name; Map<String, String> textMap = new HashMap<String, String>(); textMap.put("name", "testname"); Map<String, String> fileMap = new HashMap<String, String>(); fileMap.put("userfile", pic_path); // 上传图片 String result = formUploadutil.formUpload( urlStr, textMap, fileMap); 这是上传文件的代码 public class formUploadutil { public static String formUpload(String urlStr, Map<String, String> textMap,Map<String, String> fileMap) { String res = ""; HttpURLConnection conn = null; String BOUNDARY = "---------------------------123821742118716"; //boundary就是request头和上传文件内容的分隔符 try { URL url = new URL(urlStr); conn = (HttpURLConnection) url.openConnection(); conn.setConnectTimeout(2*60000); conn.setReadTimeout(2*60000); conn.setDoOutput(true); conn.setDoInput(true); conn.setUseCaches(false); conn.setRequestMethod("POST"); conn.setRequestProperty("Connection", "Keep-Alive"); // conn.setRequestProperty("User-Agent", // "Mozilla/5.0 (Windows; U; Windows NT 6.1; zh-CN; rv:1.9.2.6)"); conn.setRequestProperty("Content-Type","multipart/form-data; boundary=" + BOUNDARY); OutputStream out = new DataOutputStream(conn.getOutputStream()); // text if (textMap != null) { StringBuffer strBuf = new StringBuffer(); Iterator iter = textMap.entrySet().iterator(); while (iter.hasNext()) { Map.Entry entry = (Map.Entry) iter.next(); String inputName = (String) entry.getKey(); String inputValue = (String) entry.getValue(); if (inputValue == null) { continue; } strBuf.append("\r\n").append("--").append(BOUNDARY).append("\r\n"); strBuf.append("Content-Disposition: form-data; name=\""+ inputName + "\"\r\n");//\r\n strBuf.append(inputValue); } out.write(strBuf.toString().getBytes()); } // file if (fileMap != null) { Iterator iter = fileMap.entrySet().iterator(); while (iter.hasNext()) { Map.Entry entry = (Map.Entry) iter.next(); String inputName = (String) entry.getKey(); String inputValue = (String) entry.getValue(); Log.i("web","获取的路径: "+inputValue); if (inputValue == null) { continue; } File file = new File(inputValue); String filename = file.getName(); String contentType ="image/jpeg"; if (filename.endsWith(".png")) { contentType = "image/png"; } if (contentType == null || contentType.equals("")) { contentType = "application/octet-stream"; } StringBuffer strBuf = new StringBuffer(); strBuf.append("\r\n").append("--").append(BOUNDARY).append( "\r\n"); strBuf.append("Content-Disposition: form-data; name=\"" + inputName + "\"; filename=\"" + filename + "\"\r\n"); strBuf.append("Content-Type:" + contentType + "\r\n\r\n"); out.write(strBuf.toString().getBytes()); DataInputStream in = new DataInputStream( new FileInputStream(file)); int bytes = 0; byte[] bufferOut = new byte[1024]; while ((bytes = in.read(bufferOut)) != -1) { out.write(bufferOut, 0, bytes); } in.close(); } } byte[] endData = ("\r\n--" + BOUNDARY + "--\r\n").getBytes(); out.write(endData); out.flush(); out.close(); // 读取返回数据 StringBuffer strBuf = new StringBuffer(); BufferedReader reader = new BufferedReader(new InputStreamReader( conn.getInputStream())); String line = null; while ((line = reader.readLine()) != null) { strBuf.append(line).append("\n"); } res = strBuf.toString(); reader.close(); reader = null; } catch (Exception e) { Log.i("connection------------>>>", "发送POST请求出错。" + urlStr); System.out.println("发送POST请求出错。" + urlStr); e.printStackTrace(); } finally { if (conn != null) { conn.disconnect(); Log.i("connection------------>>>", "发送POST请求出错。" + "断开连接"); conn = null; } } return res; } }
beyondma 2015-11-12
  • 打赏
  • 举报
回复
timeout就是超时啊亲
sanxiaochengyu 2015-11-12
  • 打赏
  • 举报
回复
上个代码看看撒

80,359

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧