使用MyEclipse无法上传文件到Hadoop HDFS的原因与解决方法
导入失败的解决方法

导入失败的解决方法导入失败是许多软件和应用程序中常见的问题,通常涉及数据、文件或库等内容无法正确加载。
解决导入失败的问题通常需要一系列步骤,下面提供了一些通用的解决方法。
检查文件格式:首先确保你正在尝试导入的文件格式与程序或软件所支持的格式相匹配。
不同的程序对文件格式有不同的要求,如Excel、CSV、JSON等。
检查文件路径:确保文件路径正确无误,特别是当涉及相对路径和绝对路径时。
路径中的任何小错误都可能导致导入失败。
权限问题:确保你有足够的权限来访问和导入文件。
有时,操作系统或应用程序的权限设置可能会阻止文件的访问。
文件损坏:如果文件在传输或保存过程中损坏,可能会导致导入失败。
尝试重新获取或生成文件,并确保在传输过程中没有出现问题。
软件或库版本:确保你使用的软件或库是最新版本。
旧版本可能不支持某些新特性或格式,从而导致导入失败。
依赖问题:如果导入功能依赖于其他库或插件,确保这些依赖项都已正确安装和配置。
查看错误消息:当导入失败时,程序通常会显示错误消息。
仔细阅读这些消息,因为它们可能提供了关于问题的详细信息和解决方案。
日志文件:检查任何相关的日志文件,以获取更详细的错误信息。
这有助于诊断问题的根本原因。
搜索解决方案:如果上述方法都不能解决问题,尝试在网上搜索具体的错误消息或问题描述。
可能有其他用户遇到了相同的问题,并分享了解决方案。
联系支持:如果问题依然无法解决,考虑联系软件或应用程序的开发者或技术支持团队,他们可能能提供更专业的帮助。
总之,解决导入失败的问题通常需要对错误消息进行仔细分析,检查文件格式、路径和权限,以及更新软件和依赖项。
通过综合应用这些方法,大多数导入失败的问题都可以得到解决。
1+x大数据习题(含答案)

1+x大数据习题(含答案)一、单选题(共93题,每题1分,共93分)1.HDFS 启动成功的标识是()A、jps 显示 NameNodeB、jps 显示 DataNodeC、jps 显示 SecondaryNameNodeD、jps 显示NameNode\DataNode\SecondaryNameNode正确答案:D2.HDFS首先把大数据文件切分成若干个小的数据块,再把这些数据块分别写入不同的节点,这些负责保存文件数据的节点被称为?()A、NameNodeB、DataNodeC、SecondaryNameNodeD、Block正确答案:B3.关于SecondaryNameNode哪项是正确的?A、它对内存没有要求B、SecondaryNameNode应与NameNode部署到一个节点C、它是NameNode的热备D、它的目的是帮助NameNode合并编辑日志,减少NameNode启动时间正确答案:D4.用于检查节点自身的健康状态的进程是()A、ResourceManagerB、NodeManagerC、NameNodeD、DataNode正确答案:B5.关于HDFS回收站描述正确的是?()A、HDFS回收站默认开启B、HDFS回收站中的文件文件像Windows回收站一样,如果不清空回收站,文件会一直保留在回收站。
C、HDFS为每一个用户都创建了回收站,这个类似操作系统的回收站。
位置是/user/用户名/.Trash/D、用户不能手动清空回收站中的内容正确答案:Cnode 在启动时自动进入安全模式,在安全模式阶段,说法错误的是()A、安全模式目的是在系统启动时检查各个 DataNode 上数据块的有效性B、根据策略对数据块进行必要的复制或删除C、当数据块最小百分比数满足的最小副本数条件时,会自动退出安全模式D、文件系统允许有修改正确答案:D7.大数据分析平台的实施流程顺序是()。
A与甲方确定总体计划B组建项目团队C部署环境准备D应用集成及数据集成E 系统安装和调试A、BACEDB、CABEDC、ADCBED、DABCE正确答案:A8.列出mysql数据库中的所有数据库sqoop命令是?A、sqoop import –connectB、sqoop list-tables –connectC、sqoop create-hive-table –connectD、sqoop list-databases –connect正确答案:D9.在确认客户需求,进行确认需求调研的时候,以下说法正确的是()。
el-upload 文件上传失败方法

el-upload 文件上传失败方法
要处理elupload文件上传失败的方法,可以参考以下步骤:
1. 确保elupload插件的配置正确,并且服务器端已经正确配置了文件上传的接口。
2. 检查文件上传的URL是否正确。
可以通过浏览器的开发者工具查看网络请求,看是否有文件上传接口的请求失败或返回错误信息。
3. 检查文件上传的限制条件。
elupload插件有一些配置选项,比如文件大小限制、文件类型限制等。
检查这些配置项是否与服务器端的限制条件相匹配,如果不匹配可能会导致文件上传失败。
4. 检查文件上传接口的返回值。
如果服务器端的文件上传接口返回了错误信息,可以通过elupload插件的`response`事件来获取返回值,并根据返回值做相应的处理。
5. 检查相关的网络条件。
如果文件上传失败,可能是由于网络问题导致的。
可以尝试在其他网络环境下再次进行文件上传,看是否还是失败。
6. 添加错误处理逻辑。
在elupload插件的配置项中,可以通过`error`事件来监听文件上传过程中的错误,并处理错误情况。
如果以上方法仍然无法解决文件上传失败的问题,可能需要深入排查服务器端的配置,或者联系elupload插件的维护者寻求帮助。
eclipse开发hadoop程序

hadoop Map/Reduce开发实例1) Eclipse插件配置与程序开发在windows下开发Map/Readuce程序,首先要在windows安装cygwin,目的是让hadoop在执行过程中可以用到linux下的一些shell命令,sygwin则给window装了一个linux外壳。
配置eclipse及运行程序具体步骤如下:1. 安装cygwin步骤略过(网上安装步骤很多,因为不是此篇文章重点,不再赘述)但值得注意的在安装过程中一定要安装以下部分(1). net下的openssh和openssl,base下的sed,devel下的subversion(2). 设置环境变量path,需要设置 Cygwin 的bin 目录,具体是否需要设置 Cygwin 的usr\bin 目录还不是很确定,但本人设置了提示:cygwin安装完成后会有cygwin ssd服务在windows服务中,可以启动也可以不启动。
2. 下载并安装hadoop,(本人使用hadoop0.20.2版本)下载:/dyn/closer.cgi/hadoop/core/安装:即将hadoop-0.20.2.tar.gz解压即可2. 下载并安装hadoop eclipse插件(1)下载插件:https:///jira/browse/MAPREDUCE-1280(注意:此hadoop-eclipse-plugin-0.20.3-SNAPSHOT.jar插件支持eclipse3.4+,hadoop0.20.2目录 hadoop-0.20.2\contrib\eclipse-plugin中的插件只支持到eclipse3.3版本,版本不支持的话,导致插件不能正常使用。
)(2). 将插件拷贝到eclipse的plugins目录中(使用其他方法装载插件也可以),启动eclipse(3). 配置插件a.打开eclipse -->window->open prespective,可见并打开“ Map/Reduce ” 视图,如图:b. 打开eclipse -->window->show view, 可见并打开MapReduce tool --> Map/Reduce locations ,点击新建locations,视图如下:General选项卡各个参数说明:Location name:本地视图的location名称,自己自定义一个名称即可Map/Reduce Master组内host和port: 为Map/Reduce Master的地址与端口号,此地址端口与hadoop服务器安装配置过程中conf/mapred-site.xml文件中mapred.job.tracker节点值一致。
hadoop权限错误Permissiondenied:user=root,access=W。。。

hadoop权限错误Permissiondenied:user=root,access=W。
关于不能执⾏Hadoop命令并报权限问题执⾏错误1、Permission denied: user=root, access=WRITE, inode="/":hdfs:supergroup:drwxr-xr-x mkdir: Permission denied: user=root, access=WRITE, inode="/":hdfs:supergroup:drwxr-xr-xput: Permission denied: user=root, access=WRITE, inode="/":hdfs:supergroup:drwxr-xr-x这些类似的权限问题都属于同类问题,他是我说我们的执⾏Hadoop命令的⽤户没有,执⾏权限。
刚开始我想解决问题的思路是,将当前⽤户授权。
(这种想法是不正确的,不要为了简化输⼊命令,就试图修改这些东西)现在的想法:⽤的他指定的⽤户去执⾏[root@cdh1 data]#sudo -u hdfs hadoop fs -mkdir /newFile或者[root@cdh1 data]#sudo -u hdfs dfhs dfs -mkdir /newFile更简单的是,先进⼊这个⽤户,su hdfs然后在这上⾯执⾏相应的命令就ok我顺便说⼀下,为什么会出现这样的问题。
如果你是⽤tar 包解压缩的⽅式,⼿动配置的,肯定不会出现这些问题。
我第⼀次是⽤,cloudera manager 安装,选择的是enterprise 60天的那个。
安装完成也没有问题。
第⼆次是⽤现在这种⽅式安装的。
选择的是第⼀个,免费版。
其实这个也不算是安装上的问题。
因为你⽤yarn安装的时候,他默认会⽤这个⽤户安装,这个就相当于,Linux的超级⽤户,他是Hadoop的超级⽤户组的⽤户。
[大数据运维]第28讲:Hadoop平台常见故障汇总以及操作系统性能调优
![[大数据运维]第28讲:Hadoop平台常见故障汇总以及操作系统性能调优](https://img.taocdn.com/s3/m/28f36061b94ae45c3b3567ec102de2bd9605dea2.png)
[⼤数据运维]第28讲:Hadoop平台常见故障汇总以及操作系统性能调优第28讲:Hadoop 平台常见故障汇总以及操作系统性能调优⾼俊峰(南⾮蚂蚁)Hadoop ⽇常运维问题及其解决⽅法1.如何下线⼀个 datanode 节点?当⼀个 datanode 节点所在的服务器故障或者将要退役时,你需要在 Hadoop 中下线这个节点,下线⼀个 datanode 节点的过程如下。
(1)修改 hdfs-site.xml ⽂件如下选项,找到 namenode 节点配置⽂件 /etc/hadoop/conf/hdfs-site.xml:<property><name>dfs.hosts.exclude</name><value>/etc/hadoop/conf/hosts-exclude</value></property>(2)修改 hosts-exclude ⽂件执⾏如下操作,在 hosts-exclude 中添加需要下线的 datanode 主机名:vi /etc/hadoop/conf/hosts-exclude172.16.213.188(3)刷新配置在 namenode 上以 hadoop ⽤户执⾏下⾯命令,刷新 hadoop 配置:[hadoop@namenodemaster ~]$hdfs dfsadmin -refreshNodes(4)检查是否完成下线执⾏如下命令,检查下线是否完成:[hadoop@namenodemaster ~]$hdfs dfsadmin -report也可以通过 NameNode 的 50070 端⼝访问 Web 界⾯,查看 HDFS 状态,需要重点关注退役的节点数,以及复制的块数和进度。
2.某个 datanode 节点磁盘坏掉怎么办?如果某个 datanode 节点的磁盘出现故障,那么该节点将不能进⾏写⼊操作,并导致 datanode 进程退出,针对这个问题,你可以如下解决:⾸先,在故障节点上查看 /etc/hadoop/conf/hdfs-site.xml ⽂件中对应的 dfs.datanode.data.dir 参数设置,去掉故障磁盘对应的⽬录挂载点;然后,在故障节点上查看 /etc/hadoop/conf/yarn-site.xml ⽂件中对应的 yarn.nodemanager.local-dirs 参数设置,去掉故障磁盘对应的⽬录挂载点;最后,重启该节点的 DataNode 服务和 NodeManager 服务即可。
泛微e-cology常见_问题解决及性能调优
常见问题之安装问题
3. License无法提交,提示License信息错误
用户环境: Windows、AIX、Linux
问题原因: 有些系统的文件编码并非GBK,导致文件上传后无法识别License文件信息。
解决方法: Windows: 1) 卸载Resin服务,使用命令 httpd.exe -remove 2) 重新安装Resin服务,使用命令重新安装Resin服务
应用并重启数据库使配置生效此操作具有一定危险性请配置前备份数据库最好由客户dba来配置常见问题之性能调优2优化oracle系统参数如果系统使用人数非常多需要调整下oracle的处理进程数
e-cology常见问题解 决及性能调优
常见问题及解决方法
安装问题
常见问题之安装问题
1.迁移、恢复Ecology系统后,License无法提交
常见问题之性能调优
Linux: 修改/usr/weaver/resin-2.1.14/bin/startresin.sh文件 /usr/weaver/resin-2.1.14/bin/httpd.sh -Xms1024M –Xmx1800M -Xss150k &
Linux下检查JDK
JDK版本号
Linux系统不同 支持的JDK大小 各有差异,要得 到最优配置就使
SQL脚本如下:
/usr/weaver/resin-2.1.14/bin/httpd.sh –Xms1024M -Xmx1800M -Dfile.encoding=GBK -Xss150k &
常见问题之安装问题
4. Linux环境下登录系统后所有页面显示乱码
用户环境: Linux、AIX
问题原因: 系统未安装GBK语言包,或者当前非GBK环境。
实验3-熟悉常用的HDFS操作-答案
实验2熟悉常用的HDFS操作1实验目的1. 理解HDFS在Hadoop体系结构中的角色;2. 熟练使用HDFS操作常用的Shell命令;3. 熟悉HDFS操作常用的Java API。
2实验平台操作系统:LinuxHadoop版本:2.6.0或以上版本JDK版本:1.6或以上版本Java IDE:Eclipse3实验内容和要求(1)向HDFS中上传任意文本文件,如果指定的文件在HDFS中已经存在,由用户指定是追加到原有文件末尾还是覆盖原有的文件;(2)从HDFS中下载指定文件,如果本地文件与要下载的文件名称相同,则自动对下载的文件重命名;Shell命令:if $(./hdfs dfs -test -e );then $(./hdfs dfs -copyToLocal text.txt ./text2.txt);else $(./hdfs dfs -copyToLocal text.txt ./text.txt);fiJava代码:import org.apache.hadoop.conf.Configuration;import org.apache.hadoop.fs.*;import java.io.*;public class HDFSApi {/*** 下载文件到本地* 判断本地路径是否已存在,若已存在,则自动进行重命名*/public static void copyToLocal(Configuration conf, String remote, String local) throws IOException {fs = (conf);Path remotePath = new Path(remote);File f = new );/* 如果文件名存在,自动重命名(在文件名后面加上_0, _1 ...) */if (f.exists()) {System.out.println(local + " 已存在.");Shell命令:./hdfs dfs -cat text.txtJava代码:import org.apache.hadoop.conf.Configuration;import org.apache.hadoop.fs.*;import java.io.*;public class HDFSApi {/*** 读取文件内容*/public static void cat(Configuration conf, String remote) throws IOException { fs = (conf);Path remotePath = new Path(remote);FSDataInputStream in = fs.open(remotePath);BufferedReader d = new BufferedReader(new InputStreamReader(in));String line = null;while ( (line = d.readLine()) != null ) {System.out.println(line);}d.close();in.close();fs.close();}/*** 主函数*/public static void main(String[] args) {Configuration conf = new Configuration();conf.set("","hdfs://localhost:9000");String remote = "/user/hadoop/text.txt"; // HDFS路径try {System.out.println("读取文件: " + remote);HDFSApi.cat(conf, remote);System.out.println("\n读取完成");} catch (Exception e) {e.printStackTrace();}}}Shell命令:./hdfs dfs -ls -h text.txtJava代码:import org.apache.hadoop.conf.Configuration;import org.apache.hadoop.fs.*;import java.io.*;(5)给定HDFS中某一个目录,输出该目录下的所有文件的读写权限、大小、创建时间、路径等信息,如果该文件是目录,则递归输出该目录下所有文件相关信Shell命令:./hdfs dfs -ls -R -h /user/hadoopJava代码:import org.apache.hadoop.conf.Configuration;import org.apache.hadoop.fs.*;import java.io.*;import java.text.SimpleDateFormat;public class HDFSApi {/*** 显示指定文件夹下所有文件的信息(递归)*/public static void lsDir(Configuration conf, String remoteDir) throws IOException { fs = (conf);Path dirPath = new Path(remoteDir);/* 递归获取目录下的所有文件*/RemoteIterator<Located> remoteIterator = fs.listFiles(dirPath, true);/* 输出每个文件的信息*/while (remoteIterator.hasNext()) {s = remoteIterator.next();System.out.println("路径: " + s.getPath().toString());System.out.println("权限: " + s.getPermission().toString());(6)提供一个HDFS内的文件的路径,对该文件进行创建和删除操作。
.binhadoop提示“没有那个文件或目录”解决方法
.binhadoop提⽰“没有那个⽂件或⽬录”解决⽅法
原因:配置⽂件没有配置好
⾸先打开配置⽂件
sudo vim /etc/profile
接着,在配置⽂件的最下⾯,追加三⾏配置,如下图所⽰
注意:前两⾏的=号后⾯填写的是你的JAVA和HADOOP的安装路径。
补充:可在终端下输⼊以下的命令来查看安装⽬录
echo $JAVA_HOME
echo $HADOOP_HOME
配置⽂件保存好后,需通过如下命令使其⽣效。
source /etc/profile
最后,重新输⼊要执⾏的指令,发现问题解决啦!
另⼀个⼩问题:第⼀天问题解决后,指令执⾏也没问题,为什么第⼆天输⼊相同的指令⼜报错“没有那个⽂件或⽬录”
我⾃⼰遇到这个问题,⼈已经快裂开了。
最后我发现,需要重新再输⼊⼀次这个指令,source /etc/profile。
上传文件,提示文件不存在的解决方法
上传⽂件,提⽰⽂件不存在的解决⽅法在做公司的⼀个项⽬中,需要上传⽂件,使⽤的是AjaxUpload JS组件,选择完⽂件后,发送请求到指定接⼝,随即返回服务器上⽂件的相对路径,然后PHP再做其他⼯作(这不是重点)处理上传的PHP程序,限制其⽂件⼤⼩为20Mphp.ini中post_max_size 20Mupload_max_filesize 20Mmemory_limit 256Mngint.conf中client_max_body_size 518M上传20M以下的⽂件,没有问题,但是,例如上传80M的⽂件,会报错,⽂件不存在,if ( ! isset($_FILES[$field])){ $this->set_error('upload_no_file_selected'); return FALSE;}⽹上的解决⽅法是设置 php.ini和nginx.conf中相应的属性,仍然报错,后来参考了,才找到原因解决⽅法:php.ini中的post_max_size和upload_max_filesize 的值要⼤些,不能仅限于规定的值,⽐如这个20M,根据情况,这⾥设置200M,再次上传80M的⽂件,根据PHP程序本⾝的 $_FILES['file']['error'] 可得出⽂件⼤⼩超过限制这样的提⽰1. SAPI_API SAPI_POST_HANDLER_FUNC(rfc1867_post_handler)2. {3. char *boundary, *s=NULL, *boundary_end = NULL, *start_arr=NULL, *array_index=NULL;4. char *temp_filename=NULL, *lbuf=NULL, *abuf=NULL;5. int boundary_len=0, total_bytes=0, cancel_upload=0, is_arr_upload=0, array_len=0;6. int max_file_size=0, skip_upload=0, anonindex=0, is_anonymous;7. zval *http_post_files=NULL; HashTable *uploaded_files=NULL;8. #if HAVE_MBSTRING && !defined(COMPILE_DL_MBSTRING)9. int str_len = 0, num_vars = 0, num_vars_max = 2*10, *len_list = NULL;10. char **val_list = NULL;11. #endif12. zend_bool magic_quotes_gpc;13. multipart_buffer *mbuff;14. zval *array_ptr = (zval *) arg;15. int fd=-1;16. zend_llist header;17. void *event_extra_data = NULL;18. int llen = 0;19.20. /**21. *检查是否超出最⼤上传⽂件⼤⼩,这是重点22. *从request_global中取出request_info结构体中的content_length元素,这个content_length应该是http 头信息中发给服务器的23. *如果content_length ⼤于php.ini中设置的post_max_size,就会由sapi_errror触发⼀个warning,这个warning不会被php接受(还有待研究)24. *通过nginx的log⽇志中也能发现此warning25. *26. */ 27. if (SG(request_info).content_length > SG(post_max_size)) {28. sapi_module.sapi_error(E_WARNING, "POST Content-Length of %ld bytes exceeds the limit of %ld bytes", SG(request_info).content_length, SG(post_max_size));29. return;30. }31.32. //取得上传⽂件的分隔符33. boundary = strstr(content_type_dup, "boundary");34. if (!boundary || !(boundary=strchr(boundary, '='))) {35. sapi_module.sapi_error(E_WARNING, "Missing boundary in multipart/form-data POST data");36. return;37. }38.39. boundary++;40. boundary_len = strlen(boundary);41.42. if (boundary[0] == '"') {43. boundary++;44. boundary_end = strchr(boundary, '"');45. if (!boundary_end) {46. sapi_module.sapi_error(E_WARNING, "Invalid boundary in multipart/form-data POST data");47. return;48. }49. } else {50. /* search for the end of the boundary */51. boundary_end = strchr(boundary, ',');52. }53. if (boundary_end) {54. boundary_end[0] = '';55. boundary_len = boundary_end-boundary;56. }57.58. /* Initialize the buffer */59. if (!(mbuff = multipart_buffer_new(boundary, boundary_len))) {60. sapi_module.sapi_error(E_WARNING, "Unable to initialize the input buffer");61. return;62. }63.64. //初始化$_FILE变量67. ALLOC_HASHTABLE(uploaded_files);68. zend_hash_init(uploaded_files, 5, NULL, (dtor_func_t) free_estring, 0);69. SG(rfc1867_uploaded_files) = uploaded_files;70.71. ALLOC_ZVAL(http_post_files);72. array_init(http_post_files);73. INIT_PZVAL(http_post_files);74. PG(http_globals)[TRACK_VARS_FILES] = http_post_files; //TRACK_VARS_FILE正是_FILE在php_core_globals.http_globals中的index (注1)75.76. #if HAVE_MBSTRING && !defined(COMPILE_DL_MBSTRING)77. if (php_mb_encoding_translation(TSRMLS_C)) {78. val_list = (char **)ecalloc(num_vars_max+2, sizeof(char *));79. len_list = (int *)ecalloc(num_vars_max+2, sizeof(int));80. }81. #endif82. zend_llist_init(&header, sizeof(mime_header_entry), (llist_dtor_func_t) php_free_hdr_entry, 0);83.84. if (php_rfc1867_callback != NULL) {85. multipart_event_start event_start;86.87. event_start.content_length = SG(request_info).content_length;88. if (php_rfc1867_callback(MULTIPART_EVENT_START, &event_start, &event_extra_data TSRMLS_CC) == FAILURE) {89. goto fileupload_done;90. }91. }92.93. while (!multipart_buffer_eof(mbuff TSRMLS_CC))94. {95. char buff[FILLUNIT];96. char *cd=NULL,*param=NULL,*filename=NULL, *tmp=NULL;97. size_t blen=0, wlen=0;98. off_t offset;99.100. zend_llist_clean(&header);101.102. if (!multipart_buffer_headers(mbuff, &header TSRMLS_CC)) {103. goto fileupload_done;104. }105.106. if ((cd = php_mime_get_hdr_value(header, "Content-Disposition"))) {107. char *pair=NULL;108. int end=0;109.110. while (isspace(*cd)) {111. ++cd;112. }113.114. while (*cd && (pair = php_ap_getword(&cd, ';')))115. {116. char *key=NULL, *word = pair;117.118. while (isspace(*cd)) {119. ++cd;120. }121.122. if (strchr(pair, '=')) {123. key = php_ap_getword(&pair, '=');124.125. if (!strcasecmp(key, "name")) {126. if (param) {127. efree(param);128. }129. param = php_ap_getword_conf(&pair TSRMLS_CC);130. } else if (!strcasecmp(key, "filename")) {131. if (filename) {132. efree(filename);133. }134. filename = php_ap_getword_conf(&pair TSRMLS_CC);135. }136. }137. if (key) {138. efree(key);139. }140. efree(word);141. }142.143. /* Normal form variable, safe to read all data into memory */144. if (!filename && param) {145. unsigned int value_len;146. char *value = multipart_buffer_read_body(mbuff, &value_len TSRMLS_CC);147. unsigned int new_val_len; /* Dummy variable */148.149. if (!value) {150. value = estrdup("");151. }152.153. if (sapi_module.input_filter(PARSE_POST, param, &value, value_len, &new_val_len TSRMLS_CC)) {154. if (php_rfc1867_callback != NULL) {155. multipart_event_formdata event_formdata;156. size_t newlength = 0;157.158. event_formdata.post_bytes_processed = SG(read_post_bytes);159. event_ = param;160. event_formdata.value = &value;161. event_formdata.length = new_val_len;162. event_formdata.newlength = &newlength;163. if (php_rfc1867_callback(MULTIPART_EVENT_FORMDATA, &event_formdata, &event_extra_data TSRMLS_CC) == FAILURE) {166. continue;167. }168. new_val_len = newlength;169. }170.171. #if HAVE_MBSTRING && !defined(COMPILE_DL_MBSTRING)172. if (php_mb_encoding_translation(TSRMLS_C)) {173. php_mb_gpc_stack_variable(param, value, &val_list, &len_list,174. &num_vars, &num_vars_max TSRMLS_CC);175. } else {176. safe_php_register_variable(param, value, new_val_len, array_ptr, 0 TSRMLS_CC);177. }178. #else179. safe_php_register_variable(param, value, new_val_len, array_ptr, 0 TSRMLS_CC);180. #endif181. } else if (php_rfc1867_callback != NULL) {182. multipart_event_formdata event_formdata;183.184. event_formdata.post_bytes_processed = SG(read_post_bytes);185. event_ = param;186. event_formdata.value = &value;187. event_formdata.length = value_len;188. event_formdata.newlength = NULL;189. php_rfc1867_callback(MULTIPART_EVENT_FORMDATA, &event_formdata, &event_extra_data TSRMLS_CC);190. }191.192. if (!strcasecmp(param, "MAX_FILE_SIZE")) {193. max_file_size = atol(value);194. }195.196. efree(param);197. efree(value);198. continue;199. }200.201. /* If file_uploads=off, skip the file part */202. if (!PG(file_uploads)) {203. skip_upload = 1;204. }205.206. /* Return with an error if the posted data is garbled */207. if (!param && !filename) {208. sapi_module.sapi_error(E_WARNING, "File Upload Mime headers garbled");209. goto fileupload_done;210. }211.212. if (!param) {213. is_anonymous = 1;214. param = emalloc(MAX_SIZE_ANONNAME);215. snprintf(param, MAX_SIZE_ANONNAME, "%u", anonindex++);216. } else {217. is_anonymous = 0;218. }219.220. /* New Rule: never repair potential malicious user input */221. if (!skip_upload) {222. char *tmp = param;223. long c = 0;224.225. while (*tmp) {226. if (*tmp == '[') {227. c++;228. } else if (*tmp == ']') {229. c--;230. if (tmp[1] && tmp[1] != '[') {231. skip_upload = 1;232. break;233. }234. }235. if (c < 0) {236. skip_upload = 1;237. break;238. }239. tmp++;240. }241. }242.243. total_bytes = cancel_upload = 0;244.245. if (!skip_upload) {246. /* Handle file */247. fd = php_open_temporary_fd_ex(PG(upload_tmp_dir), "php", &temp_filename, 1 TSRMLS_CC);248. if (fd==-1) {249. sapi_module.sapi_error(E_WARNING, "File upload error - unable to create a temporary file");250. cancel_upload = UPLOAD_ERROR_E;251. }252. }253.254. if (!skip_upload && php_rfc1867_callback != NULL) {255. multipart_event_file_start event_file_start;256.257. event_file_start.post_bytes_processed = SG(read_post_bytes);258. event_file_ = param;259. event_file_start.filename = &filename;260. if (php_rfc1867_callback(MULTIPART_EVENT_FILE_START, &event_file_start, &event_extra_data TSRMLS_CC) == FAILURE) { 261. if (temp_filename) {262. if (cancel_upload != UPLOAD_ERROR_E) { /* file creation failed */265. }266. efree(temp_filename);267. }268. temp_filename="";269. efree(param);270. efree(filename);271. continue;272. }273. }274.275. if (skip_upload) {276. efree(param);277. efree(filename);278. continue;279. }280.281. if(strlen(filename) == 0) {282. #if DEBUG_FILE_UPLOAD283. sapi_module.sapi_error(E_NOTICE, "No file uploaded");284. #endif285. cancel_upload = UPLOAD_ERROR_D;286. }287.288. offset = 0;289. end = 0;290. while (!cancel_upload && (blen = multipart_buffer_read(mbuff, buff, sizeof(buff), &end TSRMLS_CC)))291. {292. if (php_rfc1867_callback != NULL) {293. multipart_event_file_data event_file_data;294.295. event_file_data.post_bytes_processed = SG(read_post_bytes);296. event_file_data.offset = offset;297. event_file_data.data = buff;298. event_file_data.length = blen;299. event_file_data.newlength = &blen;300. if (php_rfc1867_callback(MULTIPART_EVENT_FILE_DATA, &event_file_data, &event_extra_data TSRMLS_CC) == FAILURE) {301. cancel_upload = UPLOAD_ERROR_X;302. continue;303. }304. }305.306. if (PG(upload_max_filesize) > 0 && total_bytes > PG(upload_max_filesize)) {307. #if DEBUG_FILE_UPLOAD308. sapi_module.sapi_error(E_NOTICE, "upload_max_filesize of %ld bytes exceeded - file [%s=%s] not saved", PG(upload_max_filesize), param, filename); 309. #endif310. cancel_upload = UPLOAD_ERROR_A;311. } else if (max_file_size && (total_bytes > max_file_size)) {312. #if DEBUG_FILE_UPLOAD313. sapi_module.sapi_error(E_NOTICE, "MAX_FILE_SIZE of %ld bytes exceeded - file [%s=%s] not saved", max_file_size, param, filename);314. #endif315. cancel_upload = UPLOAD_ERROR_B;316. } else if (blen > 0) {317.318. wlen = write(fd, buff, blen);319.320. if (wlen == -1) {321. /* write failed */322. #if DEBUG_FILE_UPLOAD323. sapi_module.sapi_error(E_NOTICE, "write() failed - %s", strerror(errno));324. #endif325. cancel_upload = UPLOAD_ERROR_F;326. } else if (wlen < blen) {327. #if DEBUG_FILE_UPLOAD328. sapi_module.sapi_error(E_NOTICE, "Only %d bytes were written, expected to write %d", wlen, blen);329. #endif330. cancel_upload = UPLOAD_ERROR_F;331. } else {332. total_bytes += wlen;333. }334.335. offset += wlen;336. }337. }338. if (fd!=-1) { /* may not be initialized if file could not be created */339. close(fd);340. }341. if (!cancel_upload && !end) {342. #if DEBUG_FILE_UPLOAD343. sapi_module.sapi_error(E_NOTICE, "Missing mime boundary at the end of the data for file %s", strlen(filename) > 0 ? filename : "");344. #endif345. cancel_upload = UPLOAD_ERROR_C;346. }347. #if DEBUG_FILE_UPLOAD348. if(strlen(filename) > 0 && total_bytes == 0 && !cancel_upload) {349. sapi_module.sapi_error(E_WARNING, "Uploaded file size 0 - file [%s=%s] not saved", param, filename);350. cancel_upload = 5;351. }352. #endif353.354. if (php_rfc1867_callback != NULL) {355. multipart_event_file_end event_file_end;356.357. event_file_end.post_bytes_processed = SG(read_post_bytes);358. event_file_end.temp_filename = temp_filename;359. event_file_end.cancel_upload = cancel_upload;360. if (php_rfc1867_callback(MULTIPART_EVENT_FILE_END, &event_file_end, &event_extra_data TSRMLS_CC) == FAILURE) {361. cancel_upload = UPLOAD_ERROR_X;364.365. if (cancel_upload) {366. if (temp_filename) {367. if (cancel_upload != UPLOAD_ERROR_E) { /* file creation failed */368. unlink(temp_filename);369. }370. efree(temp_filename);371. }372. temp_filename="";373. } else {374. zend_hash_add(SG(rfc1867_uploaded_files), temp_filename, strlen(temp_filename) + 1, &temp_filename, sizeof(char *), NULL); 375. }376.377. /* is_arr_upload is true when name of file upload field378. * ends in [.*]379. * start_arr is set to point to 1st [380. */381. is_arr_upload = (start_arr = strchr(param,'[')) && (param[strlen(param)-1] == ']');382.383. if (is_arr_upload) {384. array_len = strlen(start_arr);385. if (array_index) {386. efree(array_index);387. }388. array_index = estrndup(start_arr+1, array_len-2);389. }390.391. /* Add $foo_name */392. if (llen < strlen(param) + MAX_SIZE_OF_INDEX + 1) {393. llen = strlen(param);394. lbuf = (char *) safe_erealloc(lbuf, llen, 1, MAX_SIZE_OF_INDEX + 1);395. llen += MAX_SIZE_OF_INDEX + 1;396. }397.398. if (is_arr_upload) {399. if (abuf) efree(abuf);400. abuf = estrndup(param, strlen(param)-array_len);401. snprintf(lbuf, llen, "%s_name[%s]", abuf, array_index);402. } else {403. snprintf(lbuf, llen, "%s_name", param);404. }405.406. #if HAVE_MBSTRING && !defined(COMPILE_DL_MBSTRING)407. if (php_mb_encoding_translation(TSRMLS_C)) {408. if (num_vars>=num_vars_max){409. php_mb_gpc_realloc_buffer(&val_list, &len_list, &num_vars_max,410. 1 TSRMLS_CC);411. }412. val_list[num_vars] = filename;413. len_list[num_vars] = strlen(filename);414. num_vars++;415. if(php_mb_gpc_encoding_detector(val_list, len_list, num_vars, NULL TSRMLS_CC) == SUCCESS) {416. str_len = strlen(filename);417. php_mb_gpc_encoding_converter(&filename, &str_len, 1, NULL, NULL TSRMLS_CC);418. }419. s = php_mb_strrchr(filename, '\' TSRMLS_CC);420. if ((tmp = php_mb_strrchr(filename, '/' TSRMLS_CC)) > s) {421. s = tmp;422. }423. num_vars--;424. goto filedone;425. }426. #endif427. /* The check should technically be needed for win32 systems only where428. * it is a valid path separator. However, IE in all it's wisdom always sends429. * the full path of the file on the user's filesystem, which means that unless430. * the user does basename() they get a bogus file name. Until IE's user base drops431. * to nill or problem is fixed this code must remain enabled for all systems.432. */433. s = strrchr(filename, '\');434. if ((tmp = strrchr(filename, '/')) > s) {435. s = tmp;436. }437. #ifdef PHP_WIN32438. if (PG(magic_quotes_gpc)) {439. s = s ? s : filename;440. tmp = strrchr(s, ''');441. s = tmp > s ? tmp : s;442. tmp = strrchr(s, '"');443. s = tmp > s ? tmp : s;444. }445. #endif446.447. #if HAVE_MBSTRING && !defined(COMPILE_DL_MBSTRING)448. filedone:449. #endif450.451. if (!is_anonymous) {452. if (s && s > filename) {453. safe_php_register_variable(lbuf, s+1, strlen(s+1), NULL, 0 TSRMLS_CC);454. } else {455. safe_php_register_variable(lbuf, filename, strlen(filename), NULL, 0 TSRMLS_CC);456. }457. }458.459. /* Add $foo[name] */460. if (is_arr_upload) {463. snprintf(lbuf, llen, "%s[name]", param);464. }465. if (s && s > filename) {466. register_http_post_files_variable(lbuf, s+1, http_post_files, 0 TSRMLS_CC);467. } else {468. register_http_post_files_variable(lbuf, filename, http_post_files, 0 TSRMLS_CC);469. }470. efree(filename);471. s = NULL;472.473. /* Possible Content-Type: */474. if (cancel_upload || !(cd = php_mime_get_hdr_value(header, "Content-Type"))) {475. cd = "";476. } else {477. /* fix for Opera 6.01 */478. s = strchr(cd, ';');479. if (s != NULL) {480. *s = '';481. }482. }483.484. /* Add $foo_type */485. if (is_arr_upload) {486. snprintf(lbuf, llen, "%s_type[%s]", abuf, array_index);487. } else {488. snprintf(lbuf, llen, "%s_type", param);489. }490. if (!is_anonymous) {491. safe_php_register_variable(lbuf, cd, strlen(cd), NULL, 0 TSRMLS_CC);492. }493.494. /* Add $foo[type] */495. if (is_arr_upload) {496. snprintf(lbuf, llen, "%s[type][%s]", abuf, array_index);497. } else {498. snprintf(lbuf, llen, "%s[type]", param);499. }500. register_http_post_files_variable(lbuf, cd, http_post_files, 0 TSRMLS_CC);501.502. /* Restore Content-Type Header */503. if (s != NULL) {504. *s = ';';505. }506. s = "";507.508. /* Initialize variables */509. add_protected_variable(param TSRMLS_CC);510.511. magic_quotes_gpc = PG(magic_quotes_gpc);512. PG(magic_quotes_gpc) = 0;513. /* if param is of form xxx[.*] this will cut it to xxx */514. if (!is_anonymous) {515. safe_php_register_variable(param, temp_filename, strlen(temp_filename), NULL, 1 TSRMLS_CC); 516. }517.518. /* Add $foo[tmp_name] */519. if (is_arr_upload) {520. snprintf(lbuf, llen, "%s[tmp_name][%s]", abuf, array_index);521. } else {522. snprintf(lbuf, llen, "%s[tmp_name]", param);523. }524. add_protected_variable(lbuf TSRMLS_CC);525. register_http_post_files_variable(lbuf, temp_filename, http_post_files, 1 TSRMLS_CC);526.527. PG(magic_quotes_gpc) = magic_quotes_gpc;528.529. {530. zval file_size, error_type;531.532. error_type.value.lval = cancel_upload;533. error_type.type = IS_LONG;534.535. /* Add $foo[error] */536. if (cancel_upload) {537. file_size.value.lval = 0;538. file_size.type = IS_LONG;539. } else {540. file_size.value.lval = total_bytes;541. file_size.type = IS_LONG;542. }543.544. if (is_arr_upload) {545. snprintf(lbuf, llen, "%s[error][%s]", abuf, array_index);546. } else {547. snprintf(lbuf, llen, "%s[error]", param);548. }549. register_http_post_files_variable_ex(lbuf, &error_type, http_post_files, 0 TSRMLS_CC);550.551. /* Add $foo_size */552. if (is_arr_upload) {553. snprintf(lbuf, llen, "%s_size[%s]", abuf, array_index);554. } else {555. snprintf(lbuf, llen, "%s_size", param);556. }557. if (!is_anonymous) {558. safe_php_register_variable_ex(lbuf, &file_size, NULL, 0 TSRMLS_CC);559. }562. if (is_arr_upload) {563. snprintf(lbuf, llen, "%s[size][%s]", abuf, array_index);564. } else {565. snprintf(lbuf, llen, "%s[size]", param);566. }567. register_http_post_files_variable_ex(lbuf, &file_size, http_post_files, 0 TSRMLS_CC); 568. }569. efree(param);570. }571. }572. fileupload_done:573. if (php_rfc1867_callback != NULL) {574. multipart_event_end event_end;575.576. event_end.post_bytes_processed = SG(read_post_bytes);577. php_rfc1867_callback(MULTIPART_EVENT_END, &event_end, &event_extra_data TSRMLS_CC); 578. }579.580. SAFE_RETURN;581. }。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
使用 MyEclipse 编写 Java Web 程序,想实现文件上传到
Hadoop HDFS 的功能,文件上传提示成功,控制台也没有报 异常,到 hadoop 下运行“hadoop fs ls /user”却看不
到这个文件。你审查 hadoop/conf/ hdfs-site.xml 文件,发现 “dfs.permissions”的属性已经设定为 false,
Hale Waihona Puke Good Luck!<property> <name>dfs.permissions</name> <value>false</value> </property>
而且 hadoop 也重新启动过了。 其实, 问题出在 MyEclipse 上。 MyEclipse 自带的 Tomcat 6.0 是有问题的,你需要自己下载一个免安装版的 Tomcat 7, 然 后在 MyEclipse 中配置 Tomcat 7 的路径,最后再运行你的程 序,发现是不是已经“OK”了?恭喜啦。