- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我的代码有问题,但我不知道 E 日志报告在哪里
04-08 05:47:46.745: E/Upload Server(20080): Starting : /storage/sdcard1/Music/Piano (my favourites)/11 Tchaikovsky - The Music Lovers.mp3
04-08 05:47:47.136: E/Upload Server(20080): Connection Error : sendto failed: EPIPE (Broken pipe)
什么是(EPIPE)? ,当我尝试上传图像时,它上传成功但任何其他文件 E Cat 报告(破管)为什么!
这是我的上传代码
@Override
protected String doInBackground(String... urls) {
String upLoadServerUri = "http://test.com/test.php";
String fileName = this.file_path;
HttpURLConnection connection = null;
DataOutputStream outputStream = null;
String lineEnd = "\r\n";
String twoHyphens = "--";
String boundary = "*****";
int bytesRead, bytesAvailable, bufferSize;
byte[] buffer;
int maxBufferSize = 1*1024*1024;
File sourceFile = new File(fileName);
int sentBytes = 0;
long fileSize = sourceFile.length();
connection = null;
try
{
FileInputStream fileInputStream = new FileInputStream(sourceFile);
Log.e("Upload Server ", "Starting : "+ fileName );
URL url = new URL(upLoadServerUri);
connection = (HttpURLConnection) url.openConnection();
connection.setDoInput(true);
connection.setDoOutput(true);
connection.setUseCaches(false);
connection.setChunkedStreamingMode(1024);
connection.setRequestMethod("POST");
connection.setRequestProperty("Connection", "Keep-Alive");
connection.setRequestProperty("Content-Type","multipart/form-data;boundary="+boundary);
outputStream = new DataOutputStream(connection.getOutputStream() );
outputStream.writeBytes(twoHyphens + boundary + lineEnd);
outputStream.writeBytes("Content-Disposition: form-data; name=\"file[]\";filename=\""+ fileName + "\"" + lineEnd);
outputStream.writeBytes(lineEnd);
bytesAvailable = fileInputStream.available();
bufferSize = Math.min(bytesAvailable, maxBufferSize);
buffer = new byte[bufferSize];
bytesRead = fileInputStream.read(buffer, 0, bufferSize);
while (bytesRead > 0)
{
if(isCancelled()){
break;
}
sentBytes += bytesRead;
double percentDone = (sentBytes * 1.0) / fileSize * 100;
publishProgress((int)percentDone);
outputStream.write(buffer, 0, bufferSize);
bytesAvailable = fileInputStream.available();
bufferSize = Math.min(bytesAvailable, maxBufferSize);
bytesRead = fileInputStream.read(buffer, 0, bufferSize);
}
if(isCancelled()){
fileInputStream.close();
outputStream.flush();
outputStream.close();
Log.e("Upload Server ", "upload Canceled " );
return "canceled";
}
outputStream.writeBytes(lineEnd);
outputStream.writeBytes(twoHyphens + boundary + twoHyphens + lineEnd);
int serverResponseCode = connection.getResponseCode();
fileInputStream.close();
outputStream.flush();
outputStream.close();
if(serverResponseCode == 200)
{
Scanner s;
s = new Scanner(connection.getInputStream());
s.useDelimiter("\\Z");
final String response = s.next();
Log.e("Upload Server ", "Message : " + response);
return response;
}else
{
Log.e("Upload Server ", "Server Code Error : " + serverResponseCode );
return "faild";
}
} catch (final Exception e) {
Log.e("Upload Server ", "Error : " + e.getMessage() );
}
return "falid";
}
请注意在 Android 应用程序中仍然更新 :)我用谷歌搜索了我的问题,我找不到解决方案请帮忙!
最佳答案
'Broken pipe' 表示您已写入已被对等方关闭的连接。
可能您已超出上传大小限制。
您还应该注意,您对 available()
的使用是无效的。 Javadoc 中有一个关于不按照您使用它的方式使用它的特定警告。反正你不需要它:
while ((count = in.read(buffer)) > 0)
{
out.write(buffer, 0, count);
}
其中 buffer
是任何合理的大小,例如8192 字节。
关于java - 上传时 EPIPE(破管)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15870631/
我不断收到 EPIPE 错误,在标准输入流上,我找不到原因: 这是我的代码: var checkFile = function(data, callback){ var child_proces
我目前正在测试我的网络代码。这涉及通过 IPv4 环回地址 (127.0.0.1) 建立连接。不幸的是,程序经常(并非总是)在发送数据时给出 EPIPE 错误。 我正在使用伯克利网络套接字和 libe
我有一个 C socket 客户端程序,其中一个线程用于接收数据,另一个用于发送。如果服务器关闭,则发送者会收到EPIPE。如果我重新连接同一个套接字,那么它可以接收数据,但发送者仍然会收到EPIPE
通过调用 signal() 忽略 SIGPIPE 后,write() 调用可能会失败,errno 设置为等于 EPIPE。我是否仍需要像下面的示例那样关闭文件描述符? if (write(sock_f
我正在尝试使用 JavaPhoenixChannels ( https://github.com/eoinsha/JavaPhoenixChannels ) 连接自定义聊天服务器。 我连接套接字并抛出
我不断收到以下错误: Error: write EPIPE at errnoException (net.js:901:11) at Object.afterWrite (net.js:718:19)
我的代码有问题,但我不知道 E 日志报告在哪里 04-08 05:47:46.745: E/Upload Server(20080): Starting : /storage/sdcard1/Mus
我的代码有问题,但我不知道 E 日志报告在哪里 04-08 05:47:46.745: E/Upload Server(20080): Starting : /storage/sdcard1/Mus
我用C写了一个运行在Linux上的单线程异步服务器:套接字是非阻塞的,至于轮询,我使用的是epoll。基准测试显示服务器运行良好,根据 Valgrind 的说法,没有内存泄漏或其他问题。 唯一的问题是
if @block rd, wr = IO.pipe @pid = fork do $0 = "Forked child from Page #{@path}" rd.clos
我有一个 Broken pipe (Errno::EPIPE) 错误弹出,我不明白它是什么或如何修复它。完整的错误是: example.rb:19:in `write': Broken pipe (E
我有一个在谷歌计算上运行的 nginx-gunicorn-flask 设置 我不断从 gunicorn 得到以下信息: [2019-04-19 20:50:49 +0000] [3345] [DEBU
我使用 html-pdf 模块生成 pdf,使用以下代码: var ejs = require('ejs'); var fs = require('fs'); var pdf = require('h
我在我的 iOS 应用程序中遇到了 EPIPE 问题,并且它没有被 @try/@catch/@finally block 捕获。我怎样才能捕捉到这个信号(SIGPIPE,可能)...... 我已经在我
我只是练习一些关于 child_process @the link 的 node js 代码我的 Node 版本是 Windows 7 上的 V5.2.0。 // master.js var cp=r
我正在创建一些客户端套接字软件来从服务器读取事件。 (例如,流媒体股票报价)。 问题: .read(b); 立即返回值-1。这会导致无限循环,手机会变得很热。此外,对 s.isConnected()、
我正在使用 Node.JS + Mongoose + MongoDB。直到现在我的应用程序运行正常,现在尝试保存文档时: 保存操作: doc.save(function(err, d){ co
我有一个由 node.js 服务器加上其他文件和 HTML 文件组成的应用程序。HTML 文件是我的客户端,它必须与 node.js 服务器通信。node.js 服务器使用与其他 node.js 文件
我在 GNU/Linux 下用 C 语言编程的多线程服务器中有这种奇怪的行为。当它正在发送数据时,最终会被 SIGPIPE 中断。因此,我设法忽略了 send() 中的信号并在每次操作后处理 errn
我试图以编程方式截取 Android 屏幕的屏幕截图。我已经完成了以下代码: private void getsnap(){ try{ Process sh = Runtime
我是一名优秀的程序员,十分优秀!