導航:首頁 > 編程語言 > php文件上傳文件分割

php文件上傳文件分割

發布時間:2022-09-22 15:18:37

1. php開發,現在要做一個文件上傳的功能,文件比較大500M+最大的2G,這個如何處理

php 很少做那麼大的文件,因為php每次默認的執行時間是30s,確實要這樣做,你要做很多工作才能達到,不是幾句就能做到的

2. 怎麼用php實現文件的上傳,要求文件類型為jpg,大小不超過2m,上傳的文件存放在u

$_FILES官方文檔

你可以看看官方的$_FILES文檔,裡面有對$_FILES的內容的解釋。

想通過PHP來處理文件信息就得通過$_FILES的內容來處理,比如文件類型可以用type來判斷,要求文件類型為jpg,那就判斷if ($_FILES['file1']['type'] === 'image/jpeg'),這里的file1並不是絕對的,視情況而定。

當然如果你覺得判斷類型太麻煩,你也可以直接從name中判斷後綴名,自己將文件名分割一下就好了。大小可以用size,默認單位是位元組,不超過2M就要除以1024*1024了,可以將位元組轉換到兆位元組。

要將上傳的文件放在U目錄下,就用move_uploaded_file函數來解決,move_uploaded_file官方文檔

3. 在php curl庫中利用post請求中怎麼將一個大文件分成數據塊上傳

1、正則截取你想要拆分的數據;
2、explode 截取

4. php文件上傳文件問題

class ieb_upload{
var $FormName; //文件域名稱
var $Directroy; //上傳至目錄
var $MaxSize; //最大上傳大小
var $CanUpload; //是否可以上傳
var $doUpFile; //上傳的文件名
var $sm_File; //縮略圖名稱
var $Error; //錯誤參數

function ieb_upload($formName='', $dirPath='', $maxSize=2097152) //(1024*2)*1024=2097152 就是 2M
{
global $FormName, $Directroy, $MaxSize, $CanUpload, $Error, $doUpFile, $sm_File;
//初始化各種參數
$FormName = $formName;
$MaxSize = $maxSize;
$CanUpload = true;
$doUpFile = '';
$sm_File = '';
$Error = 0;

if ($formName == ''){
$CanUpload = false;
$Error = 1;
break;
}

if ($dirPath == ''){
$Directroy = $dirPath;
}else{
$Directroy = $dirPath.'/';
}
}

//檢查文件是否存在
function scanFile()
{
global $FormName, $Error, $CanUpload;

if ($CanUpload){

$scan = is_readable($_FILES[$FormName]['name']);

if ($scan){
$Error = 2;
}

return $scan;
}
}

//獲取文件大小
function getSize($format = 'B')
{
global $FormName, $Error, $CanUpload;

if ($CanUpload){

if ($_FILES[$FormName]['size'] == 0){
$Error = 3;
$CanUpload = false;
}

switch ($format){
case 'B':
return $_FILES[$FormName]['size'];
break;

case 'M':
return ($_FILES[$FormName]['size'])/(1024*1024);
}

}
}

//獲取文件類型
function getExt()
{
global $FormName, $Error, $CanUpload;

if ($CanUpload){
$ext=$_FILES[$FormName]['name'];
$extStr=explode('.',$ext);
$count=count($extStr)-1;
}
return $extStr[$count];
}

//獲取文件名稱
function getName()
{
global $FormName, $CanUpload;

if ($CanUpload){
return $_FILES[$FormName]['name'];
}
}

//新建文件名
function newName()
{
global $CanUpload, $FormName;

if ($CanUpload){
$FullName=$_FILES[$FormName]['name'];
$extStr=explode('.',$FullName);
$count=count($extStr)-1;
$ext = $extStr[$count];

return date('YmdHis').rand(0,9).'.'.$ext;
}
}

//上傳文件
function upload($fileName = '')
{
global $FormName, $Directroy, $CanUpload, $Error, $doUpFile;

if ($CanUpload){
if ($_FILES[$FormName]['size'] == 0){
$Error = 3;
$CanUpload = false;
return $Error;
break;
}
}

if($CanUpload){

if ($fileName == ''){
$fileName = $_FILES[$FormName]['name'];
}

$doUpload=@($_FILES[$FormName]['tmp_name'], $Directroy.$fileName);

if($doUpload)
{
$doUpFile = $fileName;
chmod($Directroy.$fileName, 0777);
return true;
}else{
$Error = 4;
return $Error;
}
}
}

//創建圖片縮略圖
function thumb($dscChar='',$width=150,$height=113)
{
global $CanUpload, $Error, $Directroy, $doUpFile, $sm_File;

if ($CanUpload && $doUpFile != ''){
$srcFile = $doUpFile;

if ($dscChar == ''){
$dscChar = 'sm_';
}

$dscFile = $Directroy.$dscChar.$srcFile;
$data = getimagesize($Directroy.$srcFile,&$info);

switch ($data[2]) {
case 1:
$im = @imagecreatefromgif($Directroy.$srcFile);
break;

case 2:
$im = @imagecreatefromjpeg($Directroy.$srcFile);
break;

case 3:
$im = @imagecreatefrompng($Directroy.$srcFile);
break;
}

$srcW=imagesx($im);
$srcH=imagesy($im);
$ni=imagecreatetruecolor($width,$height);
imageresized($ni,$im,0,0,0,0,$width,$height,$srcW,$srcH);
$cr = imagejpeg($ni,$dscFile);
chmod($dscFile, 0777);

if ($cr){
$sm_File = $dscFile;
return true;
}else{
$Error = 5;
return $Error;
}
}
}

//顯示錯誤參數
function Err(){
global $Error;
return $Error;
}

//上傳後的文件名
function UpFile(){
global $doUpFile, $Error;
if ($doUpFile != ''){
return $doUpFile;
}else{
$Error = 6;
}
}

//上傳文件的路徑
function filePath(){
global $Directroy, $doUpFile, $Error;
if ($doUpFile != ''){
return $Directroy.$doUpFile;
}else{
$Error = 6;
}
}

//縮略圖文件名稱
function thumbMap(){
global $sm_File, $Error;
if ($sm_File != ''){
return $sm_File;
}else{
$Error = 6;
}
}

//顯示版本信息
function ieb_version(){
return 'IEB_UPLOAD CLASS Ver 1.1';
}
}
?>

使用方法: <?php
//載入上傳類
include('ieb_upload.inc');
?>

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>無標題文檔</title>
</head>

<body style="font-size:12px;">
<form action="" method="post" enctype="multipart/form-data" name="form1">
<input type="file" name="file">
<input type="submit" name="Submit" value="提交">
<input name="scan" type="hidden" id="up" value="true">
</form><b /><br/>

<?php
if(isset($_REQUEST['scan'])){
//聲明一個上傳類
$upfos = new ieb_upload('file','upload');

/* ieb_upload( FormName, [Directroy, MaxSize])

FormName: 文件域的名稱,這個例子里用的是 file 。這個參數不能省略。
Directroy: 保存上傳文件的目錄名稱。此參數如果省略,文件將上傳至該處理頁目錄中。
MaxSize: 允許上傳的文件的大小限制。默認值為 2097152 byte (即 2M)。
*/

//返回將要上傳的文件名稱
echo '文件名稱:' . $upfos -> getName() . '<br/>';

//返迴文件後綴名
echo '文件類型:' . $upfos -> getExt() . '<br/>';

//返迴文件大小
echo '文件大小:' . $upfos -> getSize() . '<br/>';

/* getSize( format )

format: 返迴文件大小的單位值。默認值為 B。
B 為 byte
M 為 MB
例:getSize( 'B' );
*/

//隨機生成的文件名
echo '隨機文件:' . $upfos -> newName() . '<br/>';

/* 建議使用隨機生成的文件名,以避免上傳重名的文件。
例如: $upfos -> upload ( $upfos -> newName());
*/

//上傳文件
$upfos -> upload();

/* upload( filename )

filename: 上傳至伺服器後生成這個文件名。默認值為原來的文件名。
*/

//生成縮略圖
$upfos -> thumb();

/* thumb( [key, width, height] )

key: 生成縮略圖的關鍵字。默認值為"sm_"。如果上傳的文件名為 12345.jpg,縮略圖的文件名就為 sm_12345.jpg。
width: 縮略圖的寬度。默認值為 150 。
height: 縮略圖的高度。默認值為 113。
例:$upfos -> thumb ( 'slt_', 200, 140);
*/

//返回生成的文件名
echo '生成文件:' . $upfos -> UpFile() . '<br/>';

//返迴文件的路徑
echo '文件路徑:' . $upfos -> filePath() . '<br/>';

//返回縮略圖的名稱
echo '縮略圖片:' . $upfos -> thumbMap() . '<br/>';

//返回上傳類版本信息
echo '版本信息:' . $upfos -> ieb_version() . '<br/>';
}
?>
</body>
</html>

5. 如何在php上實現文件上傳功能

PHP 一般使用 POST 方法上傳文件,下面是一個簡單的文件上傳示例,裡面有相關的注釋:
up.htm 文件:
----------
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>Up Sample</title>
</head>
<body>
<form action="up.php" method="post" enctype="multipart/form-data">
<!--備注:表單中 enctype="multipart/form-data " 的意思,是設置表單的 MIME 編碼。默認情況,這個編碼格式是application/x-www-form-urlencoded,不能用於文件上傳;只有使用了 multipart/form-data ,才能完整的傳遞文件數據,進行下面的操作,並且 method 要設置為 "post"-->
File:<br />
<input type="file" name="upfile" size="30"><br />

<!--上傳框要設置 type="file"-->

<br />
<input type="submit" value="Upload">
</form>
</body>
</html>
----------
up.php 文件
----------
<?php
if (is_uploaded_file($_FILES["upfile"]["tmp_name"])){

//如果有文件上傳
//is_uploaded_file -- 判斷文件是否是通過 HTTP POST 上傳的,返回布爾值
//$_FILES['upfilename']['...'],其中的 'upfilename' 即為上傳框的 name 屬性
//$_FILES['upfile']['tmp_name'] -- 文件被上傳後在服務端儲存的臨時文件名,一般是系統默認
if(!eregi('pdf', $_FILES['upfile']['type'])){

//我們這里假設你要上傳一個 pdf 文件
//if(!eregi('pdf', $_FILES['upfile']['type'])) 這個是判斷上傳文件類型的,是不是 pdf 文件,當然,若是想判斷是否是 jpg 文件的話,將 pdf 改成 jpg 就可以了,即 if(!eregi('jpg', $_FILES['upfile']['type']))
//$_FILES['upfile']['type'] 是文件的 MIME 類型,如果瀏覽器提供此信息的話。例如「image/gif」
echo 'The uploaded file is not an pdf File! Please upload a right file!';
}else{
$filename = $_FILES['upfile']['name'];
//$filename = $_FILES['upfile']['name'],這里是指定上傳後的文件名,這里使用的仍是原來的文件名字,($_FILES['upfile']['name'] 是原始文件的名字)
if(move_uploaded_file($_FILES["upfile"]["tmp_name"], dirname(__FILE__)."/upload_file/".$filename)){

//這里就是上傳文件
//dirname(__FILE__)."/upload_file/".$file_name -- 指定上傳的目標文件,假設你要上傳的目標文件夾upload_file 是和當前文件(upload.php)在同一文件夾下
//chmod(dirname(__FILE__)."/upload_file/". $file_name, 0444);
//上面注釋掉的是用來改變上傳後文件的屬性,444 即只有執行和讀的許可權(看情況加上)
echo $_FILES["upfile"]["name"] . " uploaded succeed!!!";

}else{
echo "Can't upload!!!";
}
}
}else{
echo "File is not selected";
}
//需要注意的:
/*
在你的 up.php 同級目錄下建立 upload_file 文件夾,來存放上傳的文件
在上傳之前要看一下 php 的配置文件:php.ini 中的三處設置
1.是否允許文件上傳:( file_uploads = On )
2.文件上傳的最大 size:( upload_max_filesize )
3.post 的最大 size ( post_max_size ) 這個大小設置成和 uplod_max_filesize 一樣大或比 uplod_max_filesize 大
*/
/*
這只是很簡單的一個文件上傳的例子,為了幫助理解,只是判斷了一下上傳文件的類型,還可以使用 if 語句來判斷上傳文件的大小($_FILES['upfile']['type'])),並進行提示控制等,相關可以查閱 $_FILE['upfile'] 數組的各個值分別代表什麼
*/
?>

6. PHP實現瀏覽器端大文件分片上傳如何實現

分片上傳的原理就是通過切割上傳文件,然後在瀏覽器的頭部通過etag來進行劃分文件傳輸,伺服器端接收到文件片段和分割起始符之後,進行拼接文件,最後合成一個大文件。

你可以自己通過php來獲取瀏覽器頭部傳輸標志來進行文件的拼接組裝,也可以通過現有的大文件傳輸類來上傳文件。

關鍵點

記住分割文件點,也就是分割文件的順序,拼接文件需要通過etag按照順序拼接,分片可以並發傳輸,這其實也是並發下載的原理。

7. php 批量大文件上傳下載如何實現

1.首先還是查看環境是否支持超大容量上傳的支持,500M以上的文件通常為視頻文件;

2.即然他要上傳500M以上的文件,估計伺服器性能必定非同凡想,所以暫可不考慮伺服器硬體配置問題,但一定要考慮到網速問題,建議1000M以上出入速率,如少於這個數,你可以放棄這個方案了;

3.前面硬體都過關了,但程序也要加強了,一下上傳500M是哪種語言都不能實現的,唯一解決方案,文件切割,如迅雷下載原理一樣(採用續點上傳),分成若干小塊,然後全部上傳完畢以後,再進行文件合成。

4.至於PHP的文件切割,切割後上傳,以及文件合並,此類代碼網上有許多,樓主可查詢並選擇適合你的代碼,實現你的功能!

8. php怎樣設置不允許哪些類型的文件上傳,請給出代碼

$arrDenyExts = array("gif", "jpeg", "jpg", "png"); //不允許上傳文件的格式
$temp = explode(".", $_FILES["file"]["name"]); //按點分割文件名,這里根據
//$temp = explode(".","d:\test.jpg"); //按點分割文件名
$extension = end($temp);//獲取最後一個元素,確保是文件格式
$isAllow = true;
foreach($arrDenyExts as $key=>$val) {
if($extension==$val) {
$isAllow=false;
break;
}
}
if($isAllow) {
echo "該文件格式允許上傳<br/>";
} else {
echo "該文件格式不允許上傳<br/>";
}

9. php上傳大文件

<?php
ini_set('upload_max_filesize', $size);
?>
$size可以設定你想要的大小,大小不可以超過伺服器內存。

閱讀全文

與php文件上傳文件分割相關的資料

熱點內容
怎麼將安卓變成win 瀏覽:451
手機文件管理在哪兒新建文件夾 瀏覽:721
加密ts視頻怎麼合並 瀏覽:773
php如何寫app介面 瀏覽:800
宇宙的琴弦pdf 瀏覽:395
js項目提成計算器程序員 瀏覽:942
pdf光子 瀏覽:832
自拍軟體文件夾名稱大全 瀏覽:327
程序員留學移民 瀏覽:51
梁中間部位箍筋加密區 瀏覽:119
頻譜分析pdf 瀏覽:752
樂2怎麼升級安卓70 瀏覽:174
java中獲取日期 瀏覽:507
單片機74hc245 瀏覽:274
美國歷史上的總統pdf 瀏覽:753
程序員脫單實驗室靠不靠譜 瀏覽:460
php中間四位手機號 瀏覽:871
永旺app怎麼樣了 瀏覽:518
壓縮空氣流量計算軟體 瀏覽:651
智慧聊天app怎麼激活 瀏覽:926