标签: progress

无法抓取http POST文件上传进度(Android)

我正在开发一个Android应用程序,使用户能够将文件上传到Twitpic等服务.POST上传完成后没有任何外部库,工作正常.我唯一的问题是,我不能抓住任何进展,因为所有的上传是,当我完成接收不同时响应,字节到输出流.这是我做的:

URL url = new URL(urlString); 
HttpURLConnection conn = (HttpURLConnection) url.openConnection(); 
conn.setDoInput(true); 
conn.setDoOutput(true); 
conn.setUseCaches(false); 
conn.setRequestMethod("POST"); 
conn.setRequestProperty("Connection", "Keep-Alive"); 
conn.setRequestProperty("Content-Type", "multipart/form-data;boundary=" + boundary); 
DataOutputStream dos = new DataOutputStream(conn.getOutputStream());
Run Code Online (Sandbox Code Playgroud)

然后我将表单数据写入dos,现在这里并不重要.之后我自己编写文件数据(从"in"读取,这是我要发送的数据的InputStream):

while ((bytesAvailable = in.available()) > 0)
{ 
 bufferSize = Math.min(bytesAvailable, maxBufferSize);
 byte[] buffer = new byte[bufferSize];
 bytesRead = in.read(buffer, 0, bufferSize);
 dos.write(buffer, 0, bytesRead);
} 
Run Code Online (Sandbox Code Playgroud)

之后,我发送多部分表单数据以指示文件的结尾.然后,我关闭流:

in.close(); 
dos.flush(); 
dos.close(); 
Run Code Online (Sandbox Code Playgroud)

这一切都很好,到目前为止没问题.然而,我的问题是,无论文件有多大,到目前为止的整个过程大约需要一到两秒钟.当我阅读回复时,上传本身似乎发生了:

DataInputStream inStream = new DataInputStream(conn.getInputStream());
Run Code Online (Sandbox Code Playgroud)

这需要几秒钟或几分钟,具体取决于文件的大小和Internet连接的速度.我现在的问题是:1)当我将字节写入"dos"时,为什么不发生uplaod?2)如果一次发生所有事情,我怎样才能获取进度以便在上传过程中显示进度对话框?

/编辑:1)我在标题中设置了Content-Length,它稍微改变了问题,但没有以任何方式解决它:现在整个内容在最后一个字节写入流后上传.因此,这不会改变您无法获取进度的情况,因为同样,数据会立即写入.2)我在Apache HttpClient v4中尝试了MultipartEntity.在那里你根本没有OutputStream,因为在执行请求时会写入所有数据.再说一次,没有办法抓住进步.

有没有人有任何其他想法如何在多部分/表单上传中获取进程?

upload post android http progress

17
推荐指数
1
解决办法
1万
查看次数

监控Rsync进度

我正在尝试编写一个Python脚本来监视rsync传输,并提供(粗略)估计百分比进度.对于我的第一次尝试,我查看了一个rsync --progress命令,看到它打印的消息如下:

1614 100%    1.54MB/s    0:00:00 (xfer#5, to-check=4/10)

我为这样的消息编写了一个解析器,并使用to-check部分来产生一个百分比进度,在这里,这将完成60%.

但是,这有两个缺陷:

  • 在大转移中,检查分数的"分子"似乎没有单调减少,因此百分比完整性可以向后跳跃.
  • 不会为所有文件打印此类消息,这意味着进度可以向前跳转.

我已经看过要使用的其他消息替代方案,但还没有设法找到任何东西.有没有人有任何想法?

提前致谢!

python rsync progress

17
推荐指数
4
解决办法
1万
查看次数

<audio>和<progress> HTML5元素的自定义进度条

我很清楚如何使用标签和简单的Javascript为音频播放器创建自定义搜索条.

现行代码:

    <script>
  function play() {
   document.getElementById('player').play();
  }

  function pause() {
   document.getElementById('player').pause();
  }
</script>


<audio src="sample.mp3" id="player"></audio>  
<button onClick="javascript:play()" >Play</button>
<button onClick="javascript:pause()" >Pause</button>
<progress id="seekbar"></progress>
Run Code Online (Sandbox Code Playgroud)

是否可以链接进度条,以便在播放歌曲时显示进度?

javascript audio progress

16
推荐指数
3
解决办法
4万
查看次数

媒体播放器进度更新到seekbar不顺畅?

我正在使用带录音机和播放器的应用程序.我正在使用mediaplayer播放录制的.wav文件,同时我想更新到搜索栏.一切都工作正常但我的问题是媒体播放器进度更新到seekbar没有顺利发生,如果我们playig一个小文件,搜索栏的拇指在几秒钟或之间跳跃.

任何人都可以帮助我解决方法,使其顺利寻求seekbar的进展.我的代码如下所示.我被困在这里.

    mediaPlayerIntiate();
    mediaPlayerSetSource();
    mMediaPlayer.start();
    task = new TimerTask() {
                @Override
                public void run() {
                    Graphbar.post(new Runnable() {
                        @Override
                        public void run() {

                            if (mMediaPlayer != null) {

                                if (playButtonState == MediaMode.PLAY) {
                                    if (mMediaPlayer.isPlaying()) {
                                        Graphbar.setProgress(mMediaPlayer
                                                .getCurrentPosition());
                                        mediaPlayerUpdateTimer(mMediaPlayer
                                                .getCurrentPosition());
                                        enableRewindandForward();
                                    }
                                }

                            }

                        }
                    });
                }
            };
            timer = new Timer();
            timer.schedule(task, 0, 8);
Run Code Online (Sandbox Code Playgroud)

android smooth progress seekbar media-player

16
推荐指数
2
解决办法
3万
查看次数

IProgress <T>报告进度的频率

IProgress<T>用于报告进度时,它应该是

  • 代码报告进度的责任是将进度报告限制在"合理"的频率, - 或 -
  • 具体实施的责任是IProgress<T>要意识到进展报告的频率可能高于其提出这一进展的方式.

问题的背景是我有一些IProgress<T>用于报告进度的代码,它以非常高的速度报告进展情况.我想用UI进度条显示进度.如果我使用提供的Progress<T>实现(将进度发布到UI SyncronizationContext),那么它会导致UI无响应(即,有很多消息发送到消息队列,用户甚至无法单击"取消"按钮在对话框上).

所以,

  • 我可以通过报告更少来解决这个问题,但如果我的IProgress<T>实现只是将进度写入日志文件(并且可以处理高报告频率),那该怎么办呢?-要么-
  • 我可以通过创建自己的特定IProgress<T>实现来解决这个问题,该实现限制了我处理/报告进度的频率.据推测,此实现将记录非UI线程的最新进度,然后(可能)UI将基于计时器进行更新.

c# progress async-await

16
推荐指数
1
解决办法
1690
查看次数

更新每个循环中的进度条

我有一个进度条,我在许多迭代循环中更新.

https://jsfiddle.net/k29qy0do/32/ (在单击开始按钮之前打开控制台)

var progressbar = {};

$(function () {

    progressbar = {

        /** initial progress */
        progress: 0,

        /** maximum width of progressbar */
        progress_max: 0,

        /** The inner element of the progressbar (filled box). */
        $progress_bar: $('#progressbar'),

        /** Set the progressbar */
        set: function (num) {
            if (this.progress_max && num) {
                this.progress = num / this.progress_max * 100;
                console.log('percent: ' + this.progress + '% - ' + num + '/' + this.progress_max);

                this.$progress_bar.width(String(this.progress) + '%');
            }
        },

        fn_wrap: …
Run Code Online (Sandbox Code Playgroud)

javascript css jquery progress

16
推荐指数
5
解决办法
2万
查看次数

上传HTTP进度跟踪

我有WPF应用程序,我写的是将文件发布到社交网络之一.上传本身工作得很好,但我想提供一些指示,说明我在上传方面有多远.

我尝试了很多方法来做到这一点:

1)HttpWebRequest.GetStream方法:

using (
 var FS = File.Open(
  localFilePath, FileMode.Open, FileAccess.Read, FileShare.Read))
{
    long len = FS.Length;
    HttpWebRequest request = (HttpWebRequest) WebRequest.Create(url);
    request.Method = "POST";
    request.ProtocolVersion = HttpVersion.Version11;
    request.ContentType = "multipart/form-data; boundary=--AaB03x";
    //predata and postdata is two byte[] arrays, that contains
    //strings for MIME file upload (defined above and is not important)
    request.ContentLength = predata.Length + FS.Length + postdata.Length;
    request.AllowWriteStreamBuffering = false;
    using (var reqStream = request.GetRequestStream())
    {
        reqStream.Write(predata, 0, predata.Length);
        int bytesRead = 0;
        int totalRead = 0; …
Run Code Online (Sandbox Code Playgroud)

c# file-upload progress

15
推荐指数
1
解决办法
1万
查看次数

JQuery延期.使用$ .when和.progress()

我正在编写一个充斥着异步任务的解析器.我使用JQuery promises来控制和排序异步任务.这是构造函数的伪代码版本:

   /**
     * @constructor
     */
    function Parser(json)
    {   
        return $.when(
            this.delete().then(this.insert(json)),
            this.doSomething(),
            this.doSomethingElse().then(this.update(json))
        ) 
    };
Run Code Online (Sandbox Code Playgroud)

这是一个示例函数的样子:

Parser.prototype.doSomething = function()
{   
    var dfd = $.Deferred();

    exampleTask(dfd.reject, dfd.resolve);

    return dfd.promise();
};
Run Code Online (Sandbox Code Playgroud)

来自JQuery文档:

在将多个Deferred对象传递给jQuery.when的情况下,该方法从新的"master"Deferred对象返回Promise,该对象跟踪已传递的所有Deferred的聚合状态

如何使用.progress()通知任何关心Parser整体进度的人?例如

var parser = new Parser(json);
parser.progress(function(prog){console.log(prog});
Run Code Online (Sandbox Code Playgroud)

这是我想要做的事情的小提琴:http: //jsfiddle.net/ashanova/RjULA/2/

javascript jquery progress jquery-deferred

15
推荐指数
1
解决办法
8551
查看次数

计算运营的ETA的最佳方法是什么?

我正在寻找使用线性进度信息计算操作的ETA(IE:文件下载)的最佳方法.

让我们说我有以下方法被调用:

void ReportProgress(double position, double total)
{
    ...
}
Run Code Online (Sandbox Code Playgroud)

我有几个想法:

  • 计算一段时间内的进度(如最后10秒),并将该速度用作操作的平均速度
  • 保留一组已报告的最后x个进度,计算每个增量的速度并使用平均值

math progress time-estimation

14
推荐指数
4
解决办法
1万
查看次数

能够获得Future <T>对象的进度

参考java.util.concurrent包和Future接口,我注意到(除非我弄错了)启动冗长任务并能够查询进度的能力仅来自SwingWorker实现类.

这引出了以下问题:

有没有办法,在非GUI,非Swing应用程序(映像控制台应用程序)中在后台启动冗长的任务,并允许其他线程检查进度?在我看来,没有理由将此功能限制在swing/GUI应用程序中.否则,我看到的唯一可用选项是通过ExecutorService :: submit返回Future对象.但是,基本Future接口不允许监视进度.

java concurrency future progress swingworker

14
推荐指数
1
解决办法
5124
查看次数