php中的file_upload,PHP文件上传(PHP file upload)

PHP文件上传(PHP file upload)

我正在尝试使用php将文件上传到我的服务器,将它们保存到我的mysql数据库中,但我无法让它工作,这是我正在使用的脚本,我相信它与“$ _FILES有关“因为当我把它拿出来时”&& $ _FILES ['userfile'] ['size']> 0“脚本开始运行,但是那个使用”$ _FILES“的变量没有定义。

if(isset($_POST['upload']) && $_FILES['userfile']['size'] > 0) {

$fileName = $_FILES['userfile']['name'];

$tmpName = $_FILES['userfile']['tmp_name'];

$fileSize = $_FILES['userfile']['size'];

$fileType = $_FILES['userfile']['type'];

$fp = fopen($tmpName, 'r');

$content = fread($fp, filesize($tmpName));

$content = addslashes($content);

fclose($fp);

if(!get_magic_quotes_gpc())

{

$fileName = addslashes($fileName);

}

db_connect();

db_select();

$query = "INSERT INTO upload (name, size, type, content ) ".

"VALUES ('$fileName', '$fileSize', '$fileType', '$content')";

mysql_query($query) or die('Error, query failed');

db_disconnect();

echo "
File $fileName uploaded
";

}

I am trying to upload files to my server using php to save them into a binary form into my mysql database but I cant get it to work, here is the script I’m using, I believe it has something to do with "$_FILES" because when I take this out "&& $_FILES['userfile']['size'] > 0" the script starts to run but then the variables underneath that use "$_FILES" aren’t defined.

if(isset($_POST['upload']) && $_FILES['userfile']['size'] > 0) {

$fileName = $_FILES['userfile']['name'];

$tmpName = $_FILES['userfile']['tmp_name'];

$fileSize = $_FILES['userfile']['size'];

$fileType = $_FILES['userfile']['type'];

$fp = fopen($tmpName, 'r');

$content = fread($fp, filesize($tmpName));

$content = addslashes($content);

fclose($fp);

if(!get_magic_quotes_gpc())

{

$fileName = addslashes($fileName);

}

db_connect();

db_select();

$query = "INSERT INTO upload (name, size, type, content ) ".

"VALUES ('$fileName', '$fileSize', '$fileType', '$content')";

mysql_query($query) or die('Error, query failed');

db_disconnect();

echo "
File $fileName uploaded
";

}

原文:https://stackoverflow.com/questions/578054

更新时间:2019-12-08 22:24

最满意答案

这是一个2折的过程,首先是上传本身然后是服务器上的操作。 第一个验证是确保文件甚至上传。 为此你可以在线后使用

$fileName = $_FILES['userfile']['name'];

使用:

if(is_uploaded_file($fileName)) {

// Here goes all the file manipulation/storage/etc

} else {

echo 'Error: File could not be uploaded.';

}

尝试使用它,如果文件实际上传,可能会重新发布。 仅仅因为$ _FILES有内容,并不一定意味着文件已上传到服务器。

This is a 2 fold process, first the upload itself and then the manipulation on the server. The first validation would be to make sure the file was even uploaded. For that you can use after the line

$fileName = $_FILES['userfile']['name'];

Use:

if(is_uploaded_file($fileName)) {

// Here goes all the file manipulation/storage/etc

} else {

echo 'Error: File could not be uploaded.';

}

Try to use that and maybe re-post if the file was actually uploaded. Just because $_FILES has content it does not necessarily mean that the file was uploaded to the server.

2009-02-23

相关问答

首先,检查phpinfo()以查看运行时设置是什么; 如果他们仍然显示2M (默认),Apache可能不遵守.htaccess文件 通常我会告诉您确保在Apache配置的虚拟主机声明中有这个: AllowOverride Options FileInfo

但是在共享主机上并没有给你这些权限(极不可能)。 您应该与您的托管服务提供商联系,看看他们是否可以通过在虚拟主机中添加php_value设置来为您提高这些限制 或者,按照@Satya的建议,通过分块上传文件(例如一次上传1MB)解决问题。 Fi

...

您不能在文件名中使用管道(|)。 这是您遇到错误的最可能原因。 尝试将其更改为下划线或短划线。 $rand_img = uniqid();

$file_upload_folder = "uploads";

$finalImgLink = $file_upload_folder . '/' . $rand_img . '_' . $_FILES['file']['name'];

//move_uploaded_file($_FILES['file']['tmp_name'], 'uploads/$r

...

看一下Zip扩展: http://www.php.net/manual/en/zip.examples.php 我看了你链接的代码(如果你把它包含在问题中会很好)并做了一些改动: $nameFile = $_FILES['file']['name'];

$tmpName = $_FILES['file']['tmp_name'];

$download_folder = './files/';

$zip = new ZipArchive();

$fileconpress = $download_f

...

您可能无法将文件移动到/upload/这是服务器文件系统根目录中的“upload”文件夹,因此move_uploaded_file()报告了FALSE和您的消息。 另外,这个/upload/文件夹可能不存在,也不可写。 您可能希望将其移至$_SERVER['DOCUMENT_ROOT'].'/upload/' ,它将指向您的虚拟主机根目录(类似于www或您上传应用程序文件的任何地方)。 不要忘记创建这个文件夹并相应地更改其权限(CHMOD 777是个好主意)。 You probably can't

...

如果您无法更改服务器环境,请使用其中一种基于Flash的上传解决方案,如SWFUpload或Uploadify 。 (据我所知,无法使用纯Ajax传输文件)。 SWFUpload有一个速度插件 ,它可以完成你想要的功能,开箱即用。 If you can't alter your server environment, use one of the Flash based uploading solutions like SWFUpload or Uploadify. (It's not possi

...

这是一个2折的过程,首先是上传本身然后是服务器上的操作。 第一个验证是确保文件甚至上传。 为此你可以在线后使用 $fileName = $_FILES['userfile']['name'];

使用: if(is_uploaded_file($fileName)) {

// Here goes all the file manipulation/storage/etc

} else {

echo 'Error: File could not be uploaded.';

}

尝试使用它

...

你应该检查错误: 1 = UPLOAD_ERR_INI_SIZE值:1; 上传的文件超过了php.ini中的upload_max_filesize指令。 rtm: http : //php.net/manual/en/features.file-upload.errors.php 你重启了Apache吗? You should be checking for errors: 1 = UPLOAD_ERR_INI_SIZE Value: 1; The uploaded file exceeds th

...

我不确定我是否明白你的意思。 如果您只想在将文件存储到“upload”目录时重命名该文件,请在使用move_uploaded_file()时执行此操作: $destination = "upload/" . $new_filename;

if (file_exists($destination)) {

echo 'File ', $destination, ' already exists!';

} else {

move_uploaded_file($temp_filename,

...

由于目标文件存在于文件夹中,如果在数据库中找不到文件,那么显然应该检查insert查询。 请检查插入查询的语法 mysql_query("Insert into files values('$name','$file')");

Since the target files are there in folder, and if you can't find the files on the database then obvious thing should be to check insert

...

如果你想一次上传一个文件而不是用这个替换html name = "userfile" 删除multiple 它将开始工作 如果你一次上传多个文件然后用这个替换html,那么你需要运行循环来存储文件。 请参阅此 如果您在上传大文件时遇到麻烦,那么您可以将它放在您的php页面之上 ini_set('upload_max_filesize', '10M');

ini_set('post_max_size', '10M');

ini_set('max_input_time', 300);

ini_set(

...

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/502471.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

java 调用jira_java调用jira接口

http://www.cnblogs.com/starcrm/p/4837971.html首先通过jira的wsdl(http://localhost:8080/rpc/soap/jirasoapservice-v2?wsdl)生成要引入的类然后写客户端:package jiraTEST;import java.net.URI;import java.net.URISyntaxException;import java.util.ArrayList…

百度seo排名点击器app_百度SEO优化和百度竞价优缺点 - 百度整站排名

原出处:超级排名系统原文链接:百度SEO优化和百度竞价优缺点 - 超级排名系统SEO优化的优势:1、低价:在百度优化排名中,维持一年排名的成本可能只有一到两个月的竞价成本,这比竞价便宜得多,超级排…

html网页放大时文字不换行_WEB前端-html基础

一、介绍1、HTML概念HTML(Hypertext Mark-up Language)即超文本标记语言2.HTML特点HTML不需要编译,直接由浏览器执行HTML文件是一个文本文件HTML文件必须使用html或htm为文件名后缀HTML大小写不敏感,HTML与html一样3.HTML基础语法…

linux目录隐藏技术,Linux环境下的高级隐藏技术

摘要:本文深入分析了Linux环境下文件、进程及模块的高级隐藏技术,其中包括:Linux可卸载模块编程技术、修改内存映象直接对系统调用进行修改技术,通过虚拟文件系统proc隐藏特定进程的技术。隐藏技术在计算机系统安全中应用十分广泛…

python代替shell脚本_python的简洁是shell无法代替的

之前线上服务器分发配置都是用shell和expect脚本分发,脚本写了很长,上周换了ansible,现在自己用python写一个,就30行代码就可以实现需求,之前的shell写了快200行了,蛋疼,代码如下: f…

linux命令cp命令行参数,linux命令之cp命令参数及用法详解

cp (复制档案或目录)[rootlinux ~]# cp [-adfilprsu] 来源档(source) 目的檔(destination)[rootlinux ~]# cp [options] source1 source2 source3 …. directory参数:-a :相当于 -pdr 的意思;-d :若来源文件为连结文件的属性(link…

python电脑编程求圆的面积案例_学Python划重点七 网络编程(UPD Socket编程、上传文件实例、计算圆的面积实例)...

一、UPD Socket 编程 socket 对象中与UDP Socket 服务器编程有关的方法是bind() ,注意不需要listen() 和accept() , 这是因为UDP 通信不需要像TCP 一样监听端口,建立连接。 socket.recvfrom(buffsize) : 接收UDP Socket 数据&…

alert获取输入框内容_获取由 AlertDialog 生成的对话框中EditText的文本内容

在Android开发中,AlertDialog常用于处理用户的登录等。那么如何获取由 AlertDialog 生成的对话框中EditText的文本内容呢?其实Alertdialog弹出的Activity 可以认为是默认的Activity的子Activity。不能直接使用findViewById()来获取。强行使用会提示一个空…

linux中将 home目录备份成,6种优化Linux系统备份的应用与技巧

【51CTO.com快译】当转为使用Linux时,你可能会注意到你所使用的版本会带有一个默认的备份工具。然而,可能该工具并没有被设置好去备份你系统中所有重要的部分。而且,使用该默认工具也可能导致它以比预期更低的效率去产生一些更大的备份数据。…

db2嵌套查询效率_db2性能优化

性能优化概述DB2 的性能优化可以从三个方面分析:内存,CPU 和 I/O 。DB2 性能优化是一件较为复杂的综合性的工作 , 需要对问题的根源作全方位的探索和思考。同时也需要较深厚的数据库管理经验与优化知识。这对于初学者来说可能有些勉为其难。但是在很多情…

python数据分析函数大全_Python常用数据分析函数集合

1.Map函数 - 列表解析 ①.map()函数解析 (1).python源码信息C:\Users\ArSang>python Python3.6.3rc1 (v3.6.3rc1:d8c174a, Sep 19 2017, 16:39:51) [MSC v.1900 64bit (AMD64)] on win32 Type"help", "copyright", "credits" or "licens…

我的世界linux开服权限不足,我的世界路由器开服怎么获得超级管理员权限

我的世界路由器开服怎么获得超级管理员权限。小伙伴们使用路由器开服的时候会发现一个明显的问题,部分路由器并没有给你最高管理员的权限,导致大家开服的时候出现各种问题。那么路由器开服怎么才能快速获得超级管理员的权限呢?说明:为什么路…

python无法调用安装的包_如何使用python命令和安装包进行安装Django框架

在python语言的框架中,Django框架是一种Web应用框架,这个框架的版本需要跟python的版本搭配上。其中,Django框架可以使用命令安装,也可以使用下载压缩包进行安装。下面利用实例说明Django框架安装方法和过程,操作如下&…

vs传值接收页面怎么直接打开_VS2003传值

估计楼主应该是用了ORM,只知道定义泛型类,然后ORM自己就完成映射,具体怎么得到的数据,就不知道了.所以,请退回到旧时代,用DataTable传递数据.cmdText:这个是SQL查询语句;connStr:这个是数据库连接字符串.public static DataTable(string cmdText,string connStr){SqlConnection…

linux摄像头内核驱动开发,怎么在Linux下开发摄像头驱动

无根之木不活,无基之楼不立,无论是学习哪个领域知识,基础是重中之重。针对学习linux驱动,我们来仔细谈谈:个人认为C语言和数据结构就是重中之重!Linux系统最优秀的地方就在于内核。无论是进程调度&#xff…

idea卡顿的解决方法_lt;绝地求生/PUBG/解决卡顿方法(停机9小时)维护gt;9月16日(星期三) 08点30分amp;崩溃...

【正式服不停机维护公告】我们将在北京时间10月7日(星期三) 10点开始正式服的不停机维护。- 维护开始时间:10月7日(星期三) 10点 - 维护内容:优化服务器以及BUG修复1. 修复了在四排模式下队伍列表中无法显示队员的问题;2. 修复了警示胶带背包…

安装应用需要打开未知来源权限_打开安卓这个开关 不让流氓软件肆意妄为

1月21消息,国外媒体Cybernews曝光了数款存在安全隐患的安卓应用,从这些应用中我们发现大都是相机类应用。根据Cybernews的说法这些应用会寻求多项权限,而多数权限和应用本身功能并不相关。其实在国内这类软件也并不缺乏,他们通常会…

git for windows_手把手教会舍友玩 Git (包教包会,再也不用担心他的学习)

作 者: BWH_Steven 原文链接:https://www.cnblogs.com/ideal-20/p/13644420.html舍友长大想当程序员,我和他爷爷奶奶都可高兴了,写他最喜欢的喜之郎牌Git文章,学完以后,再也不用担心舍友的学习了(狗头)哪里…

合并的表格怎么加横线_word怎么合并表格边框

回答:方法如下:去掉Word文字保留表格的方法一:1、全选表格,按 Delet 键,表格的所有文字被删除,如图3所示:2、图3是图1所示是表格,文字都没有了。去掉Word文字保留表格的方法二:全选表…

Linux免设置路由端口映射,2014/04/01 演示中设置linux路由器、端口过滤的使用、路由设置...

2.linux主机做为路由器,具有数据转发和随机丢包的功能1.1.iptables 基于内核的防火墙1.2.编写防火墙设置的脚本及鸟哥的linux私房菜(服务器篇)linux 路由器的设置参考鸟哥的linux私房菜(服务器篇)使能数据包转发功能即可,linux内核本身就支持1.#cat /pro…