⑴ 上传文件名非法是什么原因
一般上传文件最有可能上传文件:
1,TXT文件,这类文件通常比较小,方便上传。我现在主要是上载这些文件。
2,Word文档,同上。
3,PDF文件,这种类型的文档有时是比较大的,缓慢的上传,并上传“重复上传”自己的处境了。我上传的软件,文件基本上都是处理的原文件,很容易上传。
4,其他类型的文档。我上传了几个不明。
我上传的经验:
1,一般先上传到文档库网络很快就会传上来,在该文件的脸上已经上传与同一时间可能会慢得多,只要作为文档转换成功可以上传。
2,上传,以节省时间,文件名复制到就可以了文档信息,并填写更麻烦。有关关键字填充选项,如:言情小说。
3,上传,当带有后缀的文件名删除。如:胭脂撕痕txt文件,文件名去掉上传txt文件,复制腘脂肪撕裂痕迹记录的信息。 ..
4,发现相同的文件已上载文件的上传时间,他们文件。这通常将于短期内提交,但上传慢。
5,当从其他网站下载了一些TXT文件,里面有很多的网站信息和其他的东西,有时候网络会提示以降低文件的质量无法上传。
我不要长时间在网络文库上传文档,这是我个人的经验,也有很多不足之处,敬请谅解。
⑵ php上传文件
根据你的程序,重新写了一套,你自己看一下吧,后面都有相关的标注,会加深印象,你原程序那个$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水准的重要项目啊。
⑶ struts2文件上传 文件名
你只需要在action中定义File file;String fileContentType;String fileFileName;然后实现其set,get方法就可以了,要注意file是你在页面上定回义的file的name,即使<input type="file" name="file"/>,在struts2中取消了actionfrom这个答类所以定义的变量的set,get方法就在action中实现。你可以看看孙鑫老师写的struts2这本书上面有专门的文件上传。
⑷ 上传照片的文件名要怎样拼写
最好使用数字或者英文名拼写,文件格式压缩成JPG或者GIF