當前位置:首頁 » 文件管理 » 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下通過

熱點內容
c語言訪問http 發布:2024-05-05 20:04:14 瀏覽:873
什麼可以配置波爾多葉 發布:2024-05-05 20:00:32 瀏覽:962
cgxrar解壓密碼 發布:2024-05-05 19:47:24 瀏覽:632
ubuntu編譯linux內核 發布:2024-05-05 19:46:05 瀏覽:7
php靜態方法調用對象 發布:2024-05-05 19:24:30 瀏覽:366
電腦LNS伺服器地址 發布:2024-05-05 19:22:15 瀏覽:376
不屬於編譯程序組成的部分是什麼 發布:2024-05-05 19:05:34 瀏覽:613
壓縮麵食 發布:2024-05-05 18:55:45 瀏覽:804
linux的gz解壓命令 發布:2024-05-05 18:24:13 瀏覽:311
伺服器機櫃屬於什麼輻射 發布:2024-05-05 18:02:10 瀏覽:336