上传文件的代码(文件上传后端代码)
求一段php上传任意文件的代码
PHP 文件上传 是通过 PHP,可以把文件上传到服务器。
1首先创建一个文件上传表单
允许用户从表单上传文件是非常有用的。
请看下面这个供上传文件的 HTML 表单:
body
form action="upload_file.php" method="post"
enctype="multipart/form-data"
label for="file"Filename:/label
input type="file" name="file" id="file" /
br /
input type="submit" name="submit" value="Submit" /
/form
/body
/html
请留意如下有关此表单的信息:
form 标签的 enctype 属性规定了在提交表单时要使用哪种内容类型。在表单需要二进制数据时,比如文件内容,请使用 "multipart/form-data"。
input 标签的 type="file" 属性规定了应该把输入作为文件来处理。举例来说,当在浏览器中预览时,会看到输入框旁边有一个浏览按钮。
注释:允许用户上传文件是一个巨大的安全风险。请仅仅允许可信的用户执行文件上传操作。
2:创建上传脚本
"upload_file.php" 文件含有供上传文件的代码:
?php
if ($_FILES["file"]["error"] 0)
{
echo "Error: " . $_FILES["file"]["error"] . "br /";
}
else
{
echo "Upload: " . $_FILES["file"]["name"] . "br /";
echo "Type: " . $_FILES["file"]["type"] . "br /";
echo "Size: " . ($_FILES["file"]["size"] / 1024) . " Kbbr /";
echo "Stored in: " . $_FILES["file"]["tmp_name"];
}
?
通过使用 PHP 的全局数组 $_FILES,你可以从客户计算机向远程服务器上传文件。
第一个参数是表单的 input name,第二个下标可以是 "name", "type", "size", "tmp_name" 或 "error"。就像这样:
$_FILES["file"]["name"] - 被上传文件的名称
$_FILES["file"]["type"] - 被上传文件的类型
$_FILES["file"]["size"] - 被上传文件的大小,以字节计
$_FILES["file"]["tmp_name"] - 存储在服务器的文件的临时副本的名称
$_FILES["file"]["error"] - 由文件上传导致的错误代码
这是一种非常简单文件上传方式。不需要考虑文件的上传格式。
php文件上传代码
1、建立一个上传网页upload.html:
form enctype="multipart/form-data" action="upload_.php" method="POST"
选择文件: input name="你的文件名字段" type="file" /
input type="确认" value="Send File" /
/form
2.上传php最基本的代码
if($_POST){
move_uploaded_file($_FILES['你的文件名字段']['tmp_name'],你的路径);
//注意 你的文件名字段 为网页的form字段 你的路径为网站你想上传的文件路径
}
以上为核心代码,加入判断文件大小,类型等可以根据 $_FILES['你的文件名字段'] 里其它的几个键值进行判断。。
var_dump($_FILES['你的文件名字段'])可以看到其它的键值。
java上传文件代码
public class FileUpLoad extends ActionSupport{
//"多文件上传就用list就可以了private ListFile file;"
private File file;
//上传文本的name
public File getFile() {
return file;
}
public void setFile(File file) {
this.file = file;
}
private String fileContentType;
//上传的文件类型。
public String getFileContentType() {
return fileContentType;
}
public void setFileContentType(String fileContentType) {
this.fileContentType = fileContentType;
}
//获取上传文件的名称
private String fileFileName;
public String getFileFileName() {
return fileFileName;
}
public void setFileFileName(String fileFileName) {
this.fileFileName = fileFileName;
}
public String upload() throws Exception
{
//获取文件上传路径
String root=ServletActionContext.getRequest().getRealPath("/upload");
InputStream is=new FileInputStream(file);
String.substring(fileFileName.indexOf("."));//截取上传文件的后缀。便于新定义名称。.jpg
System.out.println(name);
File descFile=new File(root,新定义的文件名称+fileFileName.indexOf("."));
OutputStream os=new FileOutputStream(descFile);
byte[] buffer=new byte[1024];
int length=0;
while(-1!=(length=(is.read(buffer))))
{
os.write(buffer, 0, length);
}
is.close();
os.close();
return SUCCESS;
}
}
求PHP网页上传文件代码.
自定义文件上传函数
:
?php
/**
* 文件上传
*/
/**
* 文件上传函数
* @param $name string 表单上传框的name值
* @param $file_arr array 上传文件的类型限制
* @param $filesize int 上传文件限制其大小
* @param $path string 文件的保存路径
* @return string 成功返回 "上传成功及文件名"
*/
function uploads($name,$file_arr=array('jpg','png','gif','JPG','GIF','PNG'),$filesize=3145728,$path='uploads'){
//1、检测文件的错误信息,如果是0 就允许上传(保存)
$err=$_FILES[$name]['error'];
if($err0){
if($err==1){
return '上传的文件超过了 php.ini 中 upload_max_filesize 选项限制的值。';
}elseif($err==2){
return '上传文件的大小超过了 HTML 表单中 MAX_FILE_SIZE 选项指定的值。 ';
}elseif($err==3){
return '文件只有部分被上传。';
}elseif($err==4){
return'没有文件上传';
}elseif($err=5){
return '其他错误';
}
}
//2、检测文件的类型,是否是我们需要的(png、gif、jpg)
$pre=pathinfo($_FILES[$name]['name'],PATHINFO_EXTENSION);
if(!in_array($pre,$file_arr)){
return '上传的文件类型不符';
}
//3、检测文件大小
if($_FILES[$name]['size']$filesize){
return '上传的文件太大';
}
//4、保存文件
$file_name=date('YmdHis',time()).mt_rand(1000,9999).'.'.$pre;
if(is_uploaded_file($_FILES[$name]['tmp_name'])){
move_uploaded_file($_FILES[$name]['tmp_name'], $path."/".$file_name);
return '上传成功|'.$file_name;
}else{
return "文件上传失败!";
}
}
?
怎么用php做一个文件上传代码实例
?php
??/**?
????file:?fileupload.class.php?文件上传类FileUpload
????本类的实例对象用于处理上传文件,可以上传一个文件,也可同时处理多个文件上传
??*/
??class?FileUpload?{?
????private?$path?=?"./uploads";??????????//上传文件保存的路径
????private?$allowtype?=?array('jpg','gif','png');?//设置限制上传文件的类型
????private?$maxsize?=?1000000;???????????//限制文件上传大小(字节)
????private?$israndname?=?true;???????????//设置是否随机重命名文件,?false不随机
?
????private?$originName;??????????????//源文件名
????private?$tmpFileName;??????????????//临时文件名
????private?$fileType;???????????????//文件类型(文件后缀)
????private?$fileSize;???????????????//文件大小
????private?$newFileName;??????????????//新文件名
????private?$errorNum?=?0;?????????????//错误号
????private?$errorMess="";?????????????//错误报告消息
?
????/**
?????*?用于设置成员属性($path,?$allowtype,$maxsize,?$israndname)
?????*?可以通过连贯操作一次设置多个属性值
?????*@param??string?$key??成员属性名(不区分大小写)
?????*@param??mixed??$val??为成员属性设置的值
?????*@return??object?????返回自己对象$this,可以用于连贯操作
?????*/
????function?set($key,?$val){
??????$key?=?strtolower($key);?
??????if(?array_key_exists(?$key,?get_class_vars(get_class($this)?)?)?){
????????$this-setOption($key,?$val);
??????}
??????return?$this;
????}
?
????/**
?????*?调用该方法上传文件
?????*?@param??string?$fileFile??上传文件的表单名称?
?????*?@return?bool????????如果上传成功返回数true?
?????*/
?
????function?upload($fileField)?{
??????$return?=?true;
??????/*?检查文件路径是滞合法?*/
??????if(?!$this-checkFilePath()?)?{???????
????????$this-errorMess?=?$this-getError();
????????return?false;
??????}
??????/*?将文件上传的信息取出赋给变量?*/
??????$name?=?$_FILES[$fileField]['name'];
??????$tmp_name?=?$_FILES[$fileField]['tmp_name'];
??????$size?=?$_FILES[$fileField]['size'];
??????$error?=?$_FILES[$fileField]['error'];
?
??????/*?如果是多个文件上传则$file["name"]会是一个数组?*/
??????if(is_Array($name)){????
????????$errors=array();
????????/*多个文件上传则循环处理?,?这个循环只有检查上传文件的作用,并没有真正上传?*/
????????for($i?=?0;?$i??count($name);?$i++){?
??????????/*设置文件信息?*/
??????????if($this-setFiles($name[$i],$tmp_name[$i],$size[$i],$error[$i]?))?{
????????????if(!$this-checkFileSize()?||?!$this-checkFileType()){
??????????????$errors[]?=?$this-getError();
??????????????$return=false;?
????????????}
??????????}else{
????????????$errors[]?=?$this-getError();
????????????$return=false;
??????????}
??????????/*?如果有问题,则重新初使化属性?*/
??????????if(!$return)??????????
????????????$this-setFiles();
????????}
?
????????if($return){
??????????/*?存放所有上传后文件名的变量数组?*/
??????????$fileNames?=?array();??????
??????????/*?如果上传的多个文件都是合法的,则通过销魂循环向服务器上传文件?*/
??????????for($i?=?0;?$i??count($name);?$i++){?
????????????if($this-setFiles($name[$i],?$tmp_name[$i],?$size[$i],?$error[$i]?))?{
??????????????$this-setNewFileName();?
??????????????if(!$this-copyFile()){
????????????????$errors[]?=?$this-getError();
????????????????$return?=?false;
??????????????}
??????????????$fileNames[]?=?$this-newFileName;??
????????????}??????????
??????????}
??????????$this-newFileName?=?$fileNames;
????????}
????????$this-errorMess?=?$errors;
????????return?$return;
??????/*上传单个文件处理方法*/
??????}?else?{
????????/*?设置文件信息?*/
????????if($this-setFiles($name,$tmp_name,$size,$error))?{
??????????/*?上传之前先检查一下大小和类型?*/
??????????if($this-checkFileSize()??$this-checkFileType()){?
????????????/*?为上传文件设置新文件名?*/
????????????$this-setNewFileName();?
????????????/*?上传文件??返回0为成功,?小于0都为错误?*/
????????????if($this-copyFile()){?
??????????????return?true;
????????????}else{
??????????????$return=false;
????????????}
??????????}else{
????????????$return=false;
??????????}
????????}?else?{
??????????$return=false;?
????????}
????????//如果$return为false,?则出错,将错误信息保存在属性errorMess中
????????if(!$return)
??????????$this-errorMess=$this-getError();??
?
????????return?$return;
??????}
????}
?
????/**?
?????*?获取上传后的文件名称
?????*?@param??void???没有参数
?????*?@return?string?上传后,新文件的名称,?如果是多文件上传返回数组
?????*/
????public?function?getFileName(){
??????return?$this-newFileName;
????}
?
????/**
?????*?上传失败后,调用该方法则返回,上传出错信息
?????*?@param??void???没有参数
?????*?@return?string??返回上传文件出错的信息报告,如果是多文件上传返回数组
?????*/
????public?function?getErrorMsg(){
??????return?$this-errorMess;
????}
?
????/*?设置上传出错信息?*/
????private?function?getError()?{
??????$str?=?"上传文件font?color='red'{$this-originName}/font时出错?:?";
??????switch?($this-errorNum)?{
????????case?4:?$str?.=?"没有文件被上传";?break;
????????case?3:?$str?.=?"文件只有部分被上传";?break;
????????case?2:?$str?.=?"上传文件的大小超过了HTML表单中MAX_FILE_SIZE选项指定的值";?break;
????????case?1:?$str?.=?"上传的文件超过了php.ini中upload_max_filesize选项限制的值";?break;
????????case?-1:?$str?.=?"未允许类型";?break;
????????case?-2:?$str?.=?"文件过大,上传的文件不能超过{$this-maxsize}个字节";?break;
????????case?-3:?$str?.=?"上传失败";?break;
????????case?-4:?$str?.=?"建立存放上传文件目录失败,请重新指定上传目录";?break;
????????case?-5:?$str?.=?"必须指定上传文件的路径";?break;
????????default:?$str?.=?"未知错误";
??????}
??????return?$str.'br';
????}
?
????/*?设置和$_FILES有关的内容?*/
????private?function?setFiles($name="",?$tmp_name="",?$size=0,?$error=0)?{
??????$this-setOption('errorNum',?$error);
??????if($error)
????????return?false;
??????$this-setOption('originName',?$name);
??????$this-setOption('tmpFileName',$tmp_name);
??????$aryStr?=?explode(".",?$name);
??????$this-setOption('fileType',?strtolower($aryStr[count($aryStr)-1]));
??????$this-setOption('fileSize',?$size);
??????return?true;
????}
?
????/*?为单个成员属性设置值?*/
????private?function?setOption($key,?$val)?{
??????$this-$key?=?$val;
????}
?
????/*?设置上传后的文件名称?*/
????private?function?setNewFileName()?{
??????if?($this-israndname)?{
????????$this-setOption('newFileName',?$this-proRandName());??
??????}?else{?
????????$this-setOption('newFileName',?$this-originName);
??????}?
????}
?
????/*?检查上传的文件是否是合法的类型?*/
????private?function?checkFileType()?{
??????if?(in_array(strtolower($this-fileType),?$this-allowtype))?{
????????return?true;
??????}else?{
????????$this-setOption('errorNum',?-1);
????????return?false;
??????}
????}
?
????/*?检查上传的文件是否是允许的大小?*/
????private?function?checkFileSize()?{
??????if?($this-fileSize??$this-maxsize)?{
????????$this-setOption('errorNum',?-2);
????????return?false;
??????}else{
????????return?true;
??????}
????}
?
????/*?检查是否有存放上传文件的目录?*/
????private?function?checkFilePath()?{
??????if(empty($this-path)){
????????$this-setOption('errorNum',?-5);
????????return?false;
??????}
??????if?(!file_exists($this-path)?||?!is_writable($this-path))?{
????????if?(!@mkdir($this-path,?0755))?{
??????????$this-setOption('errorNum',?-4);
??????????return?false;
????????}
??????}
??????return?true;
????}
?
????/*?设置随机文件名?*/
????private?function?proRandName()?{????
??????$fileName?=?date('YmdHis')."_".rand(100,999);????
??????return?$fileName.'.'.$this-fileType;?
????}
?
????/*?复制上传文件到指定的位置?*/
????private?function?copyFile()?{
??????if(!$this-errorNum)?{
????????$path?=?rtrim($this-path,?'/').'/';
????????$path?.=?$this-newFileName;
????????if?(@move_uploaded_file($this-tmpFileName,?$path))?{
??????????return?true;
????????}else{
??????????$this-setOption('errorNum',?-3);
??????????return?false;
????????}
??????}?else?{
????????return?false;
??????}
????}
??}
一个浏览上传多个文件的java代码
在Java中可以用struts2实现多个文件同时上传代码,功能代码如下:
1、upload.jsp页面(选择上传文件)
form?action="upload.action"?name="uploadForm"?method="post"?enctype="multipart/form-data"
文件标题:input?type="text"?name="title"/br/
选择文件-:input?type="file"?name="upload"/br/
选择文件二:input?type="file"?name="upload"/br/
选择文件三:input?type="file"?name="upload"/br/
input?type="submit"?value="upload"/??
/form
2、action代码如下:
//对应的Action依次遍历所有文件域,然后生成对应的输入文件流,输出文件流在指定的服务器保存路径中添加对应的输出文件流保存文件。同时动态指定服务器上文件的保存路径。
package?com.inspur.action;??
import?java.io.File;
import?java.io.FileInputStream;
import?java.io.FileOutputStream;?
import?org.apache.struts2.ServletActionContext;?
import?com.opensymphony.xwork2.ActionSupport;?
public?class?UploadAction?extends?ActionSupport?{
private?String?title;
private?File[]?upload;
private?String[]?uploadFileName;
private?String[]?uploadContentType;
private?String?savePath;?
public?String?getTitle()?{
return?title;
}
public?void?setTitle(String?title)?{
this.title?=?title;
}
public?File[]?getUpload()?{
return?upload;
}
public?void?setUpload(File[]?upload)?{
this.upload?=?upload;
}
public?String[]?getUploadFileName()?{
return?uploadFileName;
}
public?void?setUploadFileName(String[]?uploadFileName)?{
this.uploadFileName?=?uploadFileName;
}
public?String[]?getUploadContentType()?{
return?uploadContentType;
}
public?void?setUploadContentType(String[]?uploadContentType)?{
this.uploadContentType?=?uploadContentType;
}
public?String?getSavePath()?{
return?ServletActionContext.getRequest().getRealPath(savePath);
}
public?void?setSavePath(String?savePath)?{
this.savePath?=?savePath;
}
public?String?upload()throws?Exception{
File[]?files=this.getUpload();
for(int?i=0;ifiles.length;i++){
FileOutputStream?fos=new?FileOutputStream(this.getSavePath()+"\\"+this.getUploadFileName()[i]);
byte[]?buffer=new?byte[1024];
FileInputStream?fis=new?FileInputStream(files[i]);
int?len=0;
while((len=fis.read(buffer))0){
fos.write(buffer,0,len);
}
}?
return?SUCCESS;
}?
}
3、success.jsp页面代码如下(上传成功界面显示所有上传的图片)
文件标题:s:property?value="title"/br/
第一个图片:img?alt="first"?src="s:property?value="'upload/'+uploadFileName[0]"/"/br/
第二个图片:img?alt="second"?src="s:property?value="'upload/'+uploadFileName[1]"/"/br/