php上傳文件不改文件名(php上傳大文件失敗)

  • 1、php上傳文件後名字變了,如何讓文件名不變,上傳成功後能否獲取文件鏈接?
  • 2、用PHP上傳實現只上傳圖片並保持原文件名
  • 3、求php相冊程序,要求上傳後不改變文件名
  • 4、php上傳文件
  • 5、[php教程]php上傳文件勝利後如何自動改變文件名?
  • 6、PHP上傳圖片,並以原文件名保存!

function uploadify(){

$targetFolder = ‘/uploads/’;

$verifyToken = md5(‘unique_salt’ . $_POST[‘timestamp’]);

if (!empty($_FILES) $_POST[‘token’] == $verifyToken) {

$tempFile = $_FILES[‘Filedata’][‘tmp_name’];

$targetPath = $targetFolder;

$savePath=$targetFolder.$_FILES[‘Filedata’][‘name’];

$targetFile = rtrim($targetPath,’/’) . ‘/’ . $_FILES[‘Filedata’][‘name’];

$fileTypes = array(‘aac’,’flac’,’mar’,’wma’,’mp3′,’ape’,’ogg’);

$fileParts = pathinfo($_FILES[‘Filedata’][‘name’]);

if (in_array($fileParts[‘extension’],$fileTypes)) {

move_uploaded_file($tempFile,iconv(“UTF-8″,”gb2312”, $targetFile));

echo $savePath;

}

else

{

echo ‘Invalid file type.’;

}

}

}

這個iconv(“UTF-8″,”gb2312”, $targetFile)保持中文不被亂碼或者中文上傳不了問題。

$face=$_FILES[‘face’];

if($face[‘size’]0){

    echo ‘上傳文件為空’;

    exit;

}

//判斷文件格式

$arr=array(‘jpg’,’png’,’gif’)

$arrs=explode(‘.’,$face[‘name’]);

$ext=$arrs[count($arrs)-1];

if(!in_array($ext,$arr)){

    echo ‘文件格式錯誤!’;

    exit;

}

//判斷上傳大小

if($face[‘size’]307200){

    echo ‘文件大小已超出限制範圍!’;

    exit;

}

$dir=’faces’;//文件上傳目錄

$upload=copy($face[‘tmp_name’],$dir.’/’.$face[‘name’]);

if($upload=false){

    echo ‘文件上傳失敗!’;

    exit;

}

應該要改文件名的,別人是這樣寫的,首先是改了你圖片的名字,記錄下相片的原名字,這兩個名字是分開存入數據庫。

記住,路徑中有中文名字,是不可以顯示的。程序會報錯。

根據你的程序,重新寫了一套,你自己看一下吧,後面都有相關的標註,會加深印象,你原程序那個$filename是程序原本的文件名,沒得到的話,真讓我感覺匪夷所思……不管了,重寫一個吧,你給的信息也太少了,到底怎麼回事也沒弄明白。

哦哦,忽然想到一種可能啊,你好好檢查一下你的數據庫字段,看看是不是char 類型,或text,或varcharf都可以,別是其它不支持的類型哦,這點很重要,不然我這套程序,依舊你也寫不進去!!!

?php

include “conn.php”;

mysql_select_db(“mydb”);

if(is_uploaded_file|$_FILES[‘Filedata’][‘tmp_name’]){ //這一句是用來判斷是否有文件上傳來的。如果有的放,才執行下面的內容;

$Filedata = $_FILES[“Filedata”];

$name = $Filedata[‘name’]; //真實的文件名字是這個,而不是tmp_name, 要知道,tmp_name是臨時文件名,是php系統臨時分配的文件名,只起到一個短時間中轉的作用。而這個才是真正的文件名(確切地說,應該是上傳時原文件名。上傳後,這個文件名是可以隨意更改的。)但是在我這套程序中,好像沒用到它哦。

$type = $Filedata[‘type’]; //這些和上面下面都是一樣,都是$_FILES[]這個系統變量自動生成的一系列參數。這個是文件類型;

$size = $Filedata[‘size’]; //這個是文件大小,以字節為單位;

$tmp_name = $Filedata[‘tmp_name’]; //這個是臨時文件名,看到了吧,重點就在這裡,進行移動的時候這個會用到哦。

$error = $Filedata[‘error’]; //這個是上傳中是否有什麼錯誤,如果有錯誤的話,會返回錯誤,沒有是false;

////////////////////////////////////////////

//

//===========以下是對文件進行服務器端驗證,做好相關工作的話,可在一定程度上防止被傳木馬

//

/////////////////////////////////////////////

if($size=30000){

exit(‘您上傳的文件大小超過限定’);

}

switch($type){ //這裡我用圖片文件進行說明,如果你的是其它文件的話,也可以按這個方法進行處理。

case ‘image/pjpeg’ : $nameback=’.jpg’; //jpeg

break;

case ‘image/jpeg’ : $nameback=’.jpg’; //jpg

break;

case ‘image/gif’ : $nameback=’.gif’; //gif

break;

case ‘image/png’ : $nameback=’.png’; //png

break;

case ‘image/bmp’ : $nameback=’.bmp’; //bmp

break;

case exit(‘類型犯規!’);

} //switch end

///////////////////////////////////////////

//

//以下是對文件進行上傳後處理,包括更改文件名、寫入數據庫。(當然還可以加入判斷是否有重複文件等,這裡就不做實例了。)

//

///////////////////////////////////////////

if($nameback $error==0){

$filename=’UF_’ . date(“Ymdhs”) . $nameback; //新文件名的命名規則中間的是時間,就是這一步,可以在一定程序上防止被惡意上傳;

$fileplace=’uploads/’ . $filename; //上傳後要修改的文件(包括目錄)

$fileroot=’uploads/’; //上傳後文件放置目錄;

file_put_contents(“catcah.txt”,$tmp_name); //存放臨時文件名

move_uploaded_file($tmp_name, $fileplace); //注意,這裡放的是包括目錄和文件名的變量哦,並且在這個過程中,上傳的文件名也更改啦。

$username = mysql_real_escape_string($_POST[‘username’]);

$query =@mysql_query( “INSERT INTO `$username`(`fname`,`file`)VALUES(‘$filename’,’$uploadfile’)”)or die(“error”);

}//last if end

}//upload and writefile end(the first if end)

?

不過看你的另一個字段已經寫進去了,好像不應該是數據庫的問題,也許是$_FILES[‘Filedata’][“name”]根本就沒有取到值?,你不妨在那裡echo一下,看看是不是有取到,要學會如何調試哦,調式能力可以考驗一個phper水準的重要項目啊。

copy($HTTP_POST_FILES[‘photo’][‘tmp_name’],$path.”/”.$filename);這是我uploadsave.php里的一句用copy()上傳第2個參數就是文件名 自己定義一個就行了.

代碼實在太長,就不細細看了。

$_FILES[“upfile”][tmp_name]是臨時文件名稱,$_FILES[“upfile”][name]是原文件名稱;

你也不給你錯誤提示。只能憑空判斷了。

1、文件保存路徑錯誤,文件夾不存在。

2、圖片重新創建的過程中存在錯誤。

3、編碼問題。

解決:

先把重新創建圖片的過程給去掉,直接轉移試試,如果可以,那就是你圖片創建的問題了。

另外:imagecreatefromwbmp這個函數貌似不存在。

原創文章,作者:GTFXH,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/126808.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
GTFXH的頭像GTFXH
上一篇 2024-10-03 23:13
下一篇 2024-10-03 23:13

相關推薦

  • Linux修改文件名命令詳解

    在Linux系統中,修改文件名是一個很常見的操作。Linux提供了多種方式來修改文件名,這篇文章將介紹Linux修改文件名的詳細操作。 一、mv命令 mv命令是Linux下的常用命…

    編程 2025-04-25
  • Python獲取當前文件名

    一、通過sys模塊獲取當前文件名 Python的sys模塊提供了一種獲取當前文件名的方法。通過sys模塊可以獲取執行Python腳本的相關信息,並且可以直接獲取當前文件的所有信息。…

    編程 2025-04-25
  • Linux分割文件命令——分割大文件輕鬆搞定

    一、split命令 在Linux系統中,我們可以使用split命令來分割文件。終端中輸入以下命令: $ split [options] input_file prefix 其中,o…

    編程 2025-04-22
  • 使用Java上傳文件到Linux服務器

    一、概述 使用Java上傳文件到Linux服務器需要用到SSH(Secure Shell)協議,SSH是一種通過網絡加密通信協議,可以保證數據傳輸的安全性。 Java中可以使用JS…

    編程 2025-04-12
  • Python文件名命名規範詳解

    Python是一種廣泛使用的編程語言,能夠廣泛應用於Web開發、數據分析、機器學習等領域。在Python開發中,文件名是非常重要的一個方面,它不僅能夠幫助編程者更好地組織文件,還能…

    編程 2025-02-25
  • Curl上傳文件詳解

    一、Curl簡介 Curl是一個非常強大的開源命令行工具,用於將數據從或到服務器傳輸,支持包括文件上傳和下載在內的多種協議。它在Linux和Windows等系統中都有廣泛應用。 二…

    編程 2025-02-17
  • 詳解curl-o文件名

    一、curl文件 curl是一款強大的跨平台網絡請求工具,它支持多種協議,包括HTTP、HTTPS、FTP等,同時也支持POST、Cookie等功能。使用curl可以模擬請求,實現…

    編程 2025-02-17
  • APIPOST上傳文件詳解

    一、接口介紹 APIPOST上傳文件接口是一種快捷、安全、穩定的文件上傳方式。在使用APIPOST上傳文件之前,您需要前往APIPOST官網創建賬號,並在賬號中生成access_k…

    編程 2025-02-01
  • inputstream獲取文件名的使用方法

    一、從InputStream中獲取文件名是什麼意思? InputStream代表一個輸入流,它是與一個“輸入源”相關聯的。這個“輸入源”可以是一個文件、一個網絡連接、一個壓縮文件等…

    編程 2025-02-01
  • Linux改文件名命令詳解

    一、基本介紹 在Linux系統中,改文件名命令包括mv、cp和rename三個命令,其中mv是最常用的命令,可以重命名或移動文件。 mv命令的語法格式為:mv [選項] 源文件或目…

    編程 2025-01-27

發表回復

登錄後才能評論