当前位置:首页 » 文件管理 » c上传文件进度条

c上传文件进度条

发布时间: 2023-01-22 11:14:05

㈠ 如何用c语言实现进度条

  1. 第一种,用printf模拟输出百分比,在控制台输出,实现进度监控。

    代码:

    #include<stdio.h>
    #defineN20
    voidmBar(floatfBar){

    inti,j,k,m;
    for(i=0;i<N+6;i++)printf("");
    k=N*fBar;m=fBar*100;printf("[");
    for(i=0;i<k;i++)printf("=");
    for(j=0;j<N-k;j++)printf("");
    printf("]%3d%%",m);
    }
    voiddelay(intn){inti,j,k;for(i=0;i<n;i++)for(j=0;j<0x07fff;j++)k++;}
    voidmain()
    {
    floatx;
    inti;
    for(i=0,x=0;i<100;i++,x+=0.01){mBar(x);delay(1024);}
    mBar(1);
    }
  2. 第二种,使用窗口组件。这个要看程序工作环境,纯粹的c语言是无法实现的。可以使VC++。Visual C++中的MFC类提供了标准的进度指示器控件(CProgressCtrl)。

    m_progress->GetPos(); //获取进度条的当前位置
    m_progress->GetRange(int min,int max); //获取进度条控件的范围的下限和上限
    m_progress->OffsetPos(int nPos); //用指定的增量推进进度条控件的当前位置,重绘进度条反映新位置
    m_progress->SetBkColor(COLORREF clrNew); //设定进度条的背景颜色
    m_progress->SerPos(int nPos); //设定进度条控件的当前位置,重绘进度条反映新位置
    m_progress->SetRange(int min,int max); //设定进度条控件的范围的下限和上限
    m_progress->SetRange32(int min,int max); //设定进度条控件的范围的下限和上限
    m_progress->SetStep(int nStep); //指定进度条控件的步进增量
    m_progress->StepIt(); //通过步进增量,推进进度条控件的当前位置,重绘进度条反映新位置

    应用:
    CProgressCtrl *m_progress; //头文件中声明
    在OnInitDialog初始化
    {
    m_progress = (CProgressCtrl*)GetDlgItem(IDC_PROGRESS1);
    m_progress->SetRange(0,1000);
    m_progress->SetPos(0);
    UINT m_timer =(UINT) SetTimer(1,200,NULL);
    }

    采用在定时器的消息处理函数WM_TIMER内添加不断更新进度条界面的方法
    OnTimer (nIDEvent)
    {
    pos = pos + 50;
    if(pos>500)
    pos = 0;
    m_Progress->SetPos(pos);
    }
    或者采用在某种循环体内添加不断更新进展条界面的方法

㈡ c# 复制文件夹! 进度条

你说的,应该是那种离散型的数据,一点点增加的,
比如一共有100个,每次拷贝完一个文件夹,增加1,直到100.
这样的方式,对应的是通过把ProgressBarStyle,设置为Blocks,
然后每拷贝完一个文件夹,去调用回调函数,增加1,即可。

相关的类似的代码,可以参考我的:
【未解决】C#中添加始终滚动的进度条(跑马灯)和一格一格前进的滚动条(块)


【已解决】给C#程序添加滚动进度条(ProgressBar),实现滚动/动态更新
然后照葫芦画瓢,就可以实现自己的了。

其中,可以去网上搜一下ProgressBarStyle,可以找到更多的微软的官方的解释的。
这里不给贴地址,你自己去google中搜吧。

(此处不给贴地址,请自行去google中搜上述标题,即可找到相关帖子的地址)

㈢ C+++ MFC 基本对话框的,在这个界面中需要设计一个进度条,用来显示数据传输的进度,请问如何实现

主线程来做会阻塞界面的刷新,一般采用的是子线程来接受信息,然后通过界面窗体的句柄,实现主线程和子线程间同步,进行进度的显示的。
也可以不用同步,就定义一个进度标示变量,绑定到你的进度条控件上,在子线程中进行累加,主窗口中增加一个timer,来间隔刷新。

㈣ 用c语言socket编程服务器和客户端能相互传文件,请问怎样在服务器端设置帐号和密码,在下载时能显示进度条

1、可以在client端登入时write(发送)帐号和密码给server端,当server端接受到内容时判断是否是你预设的帐号密码,是则允许下载,否则关闭其socket。
2、是要客户端看到进度条? 这样就要要求在下载文件时server端要先发这个文件的大小给client端,client端就可以通过这个大小和接受到的字节数比较后打印进度条(printf("#");).
文件大小可用int stat(const char *restrict path, struct stat *restrict buf);函数获取。

㈤ 如何用C语言实现进度条

给题主一个简单的进度条程序吧~

#include<stdio.h>
#include<stdlib.h>
#include<conio.h>
#include<windows.h>

#defineLEN10/*进度条长度*/

intmain(void){
floatp;/*进度条刻度*/
floatprogLen;/*程序总耗时*/
inti,j;
progLen=15.0;
for(i=1;i<=progLen;i++){
system("cls");
p=(i/progLen)*LEN;/*计算程序当前进度之于进度条的比例*/
for(j=1;j<=(int)(p+0.5);j++)/*打印已执行刻度*/
printf("■");
for(j=1;j<=LEN-(int)(p+0.5);j++)/*打印待执行刻度*/
printf("□");
printf("%.1f%%",(i/progLen)*100);/*计算程序当前进度的百分比*/
Sleep(150);
}
putchar(' ');
getch();
return0;
}

运行结果

㈥ C#和FORTRAN混合编程中,如何合理设置进度条 做的是一个科学类计算软件,C#做界面,FORTRAN做算法内核。

多线程步考虑安全其实很简单的,如果你继续学vc迟早是要接触的。我把用进度条的程序给你个框架代码你自己填;
1、设计一个带有进度条的对话框,把对话框用一个类CProgressDlg 来管理(这个你会吧),进度条增加一个成员变量m_progress;
2、定义一个多线程函数DWORD WINAPI ThreadReadFile (CProgressDlg *pDlg)(如何声明函数你应该会),函数实体里面就是具体读取文件的代码,先取得文件的大小,用这个除一个整数设置进度条的最大值,文件大了,分一小块一小块的读,比如1024K,这样就好插入对进度条的操作,每读一块就pDlg->m_progress.SetPos(progressStep+1);怎么分?你自己看MSDN。文件读完后在pDlg->PostMessage(WM_CLOSE);AfxMessageBox("文件已读完!");发送消息关闭主线程的对话框结束工作。
3、在主线程其实就是你的主程序里先调用多线程函数,然后产生对话框;
[code=C/C++][/code]
CProgressDlg *pdlg=new CProgressDlg;//注意:一定要把对话框的Visable选上才能显示控件;
HANDLE m_Thread; //线程句柄
DWORD threadID;
//AfxBeginThread(ThreadReadFile ,NULL,THREAD_PRIORITY_NORMAL,0,0,NULL);
m_Thread=CreateThread(NULL, 0,
(LPTHREAD_START_ROUTINE)ThreadReadFile ,(LPVOID)pdlg,0,&threadID);
pdlg->DoModal();//产生进度条对话框,这个对话框由你的线程来结束,否则一直有。

java多文件上传显示进度条

使用 apache fileupload ,spring MVC jquery1.6x , bootstrap 实现一个带进度条的多文件上传,由于fileupload 的局限,暂不能实现每个上传文件都显示进度条,只能实现一个总的进度条,效果如图:

packagecom.controller;

importjava.util.List;

importjavax.servlet.http.HttpServletRequest;
importjavax.servlet.http.HttpServletResponse;
importjavax.servlet.http.HttpSession;

importorg.apache.commons.fileupload.FileItemFactory;
importorg.apache.commons.fileupload.ProgressListener;
importorg.apache.commons.fileupload.disk.DiskFileItemFactory;
importorg.apache.commons.fileupload.servlet.ServletFileUpload;
importorg.apache.log4j.Logger;
importorg.springframework.stereotype.Controller;
importorg.springframework.web.bind.annotation.RequestMapping;
importorg.springframework.web.bind.annotation.RequestMethod;
importorg.springframework.web.bind.annotation.ResponseBody;
importorg.springframework.web.servlet.ModelAndView;

@Controller
{
Loggerlog=Logger.getLogger(FileUploadController.class);

/**
*upload上传文件
*@paramrequest
*@paramresponse
*@return
*@throwsException
*/
@RequestMapping(value="/upload.html",method=RequestMethod.POST)
publicModelAndViewupload(HttpServletRequestrequest,
HttpServletResponseresponse)throwsException{
finalHttpSessionhs=request.getSession();
ModelAndViewmv=newModelAndView();
booleanisMultipart=ServletFileUpload.isMultipartContent(request);
if(!isMultipart){
returnmv;
}
//Createafactoryfordisk-basedfileitems
FileItemFactoryfactory=newDiskFileItemFactory();

//Createanewfileuploadhandler
ServletFileUploapload=newServletFileUpload(factory);
upload.setProgressListener(newProgressListener(){
publicvoipdate(longpBytesRead,longpContentLength,intpItems){
ProcessInfopri=newProcessInfo();
pri.itemNum=pItems;
pri.readSize=pBytesRead;
pri.totalSize=pContentLength;
pri.show=pBytesRead+"/"+pContentLength+"byte";
pri.rate=Math.round(newFloat(pBytesRead)/newFloat(pContentLength)*100);
hs.setAttribute("proInfo",pri);
}
});
Listitems=upload.parseRequest(request);
//Parsetherequest
//Processtheuploadeditems
//Iteratoriter=items.iterator();
//while(iter.hasNext()){
//FileItemitem=(FileItem)iter.next();
//if(item.isFormField()){
//Stringname=item.getFieldName();
//Stringvalue=item.getString();
//System.out.println("thisiscommonfeild!"+name+"="+value);
//}else{
//System.out.println("thisisfilefeild!");
//StringfieldName=item.getFieldName();
//StringfileName=item.getName();
//StringcontentType=item.getContentType();
//booleanisInMemory=item.isInMemory();
//longsizeInBytes=item.getSize();
//FileuploadedFile=newFile("c://"+fileName);
//item.write(uploadedFile);
//}
//}
returnmv;
}


/**
*process获取进度
*@paramrequest
*@paramresponse
*@return
*@throwsException
*/
@RequestMapping(value="/process.json",method=RequestMethod.GET)
@ResponseBody
publicObjectprocess(HttpServletRequestrequest,
HttpServletResponseresponse)throwsException{
return(ProcessInfo)request.getSession().getAttribute("proInfo");
}

classProcessInfo{
publiclongtotalSize=1;
publiclongreadSize=0;
publicStringshow="";
publicintitemNum=0;
publicintrate=0;
}

}

㈧ C语言进度条

程序1:#include "stdio.h"
#include <dos.h>
#include <conio.h>
/*去光标函数*/
void no_text_cursor(void)
{
union REGS r;
r.h.ah=1;
r.h.ch=32;
int86(0x10,&r,&r);
}
main()
{
int i;
int bfb;
char b=219;
char c='%';
for(i=1;i<=60;i++)
{ gotoxy(i,1); /*为了能在进度条和百分比之间变动*/
no_text_cursor();
delay(45000);/*前后两个delay是为了让滚动更好看,流畅*/
printf("%c",b);
delay(45000);
gotoxy(31,2); /*为了能在进度条和百分比之间变动*/
bfb=((i*10)/6);
printf("%d",bfb);
gotoxy(34,2);
printf("%");
}
printf("\nLoading Successful!");
getch();
}程序2:#include<graphics.h>
main()
{
int gdriver=DETECT,gmod,i;
/*registerbgidriver(EGAVGA_driver);*/
initgraph(&gdriver,&gmod,"");
setlinestyle(0,0,2);
rectangle(3,215,637,250);
setcolor(RED);
sleep(3);
for(i=0;i<632;++i)
{
if(i==631)break;
line(5+i,216,5+i,249);
delay(2888);
}
getch();
closegraph();
} 以上程序均在TC2.0下通过

热点内容
linux驱动开发教程 发布:2024-05-17 17:19:52 浏览:500
抖音中秋节视频脚本 发布:2024-05-17 17:19:51 浏览:193
快递柜为什么用安卓系统 发布:2024-05-17 17:17:18 浏览:906
电脑配置光纤接口怎么标注 发布:2024-05-17 17:06:56 浏览:976
如何用方向键控制安卓机 发布:2024-05-17 16:38:11 浏览:198
雨田系统源码 发布:2024-05-17 16:28:06 浏览:586
新手直播脚本 发布:2024-05-17 16:27:25 浏览:847
python双引号单引号 发布:2024-05-17 16:19:31 浏览:948
0xxc语言 发布:2024-05-17 16:17:40 浏览:700
php与java的区别 发布:2024-05-17 16:12:48 浏览:340