今天遇到几个PUT上传的点,但是都没利用起来。一怒之下,在自己本地试了一下。步骤如下:

一、环境:

首先,根据 配置Apache服务器支持向目录PUT文件 更新一下httpd.conf文件,重启所有服务。

二、HTTP - PUT

PUT的前提,是了解HTTP协议。下面给出HTTP - PUT的一个模板:

PUT /test.txt HTTP/1.1
Accept: */*
Accept-Language: en-US
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Win32)
Host: test.com:8080 hello world

要注意如下几个点:

① PUT方法是HTTP 1.1协议中才出现的。

② HTTP协议对空格敏感,每行数据的结尾不能出现空格

③ HTTP头部和数据中间要空一行,即HTTP头部是以\r\n\r\n结尾的。

④ 端口号直接跟在HOST后面

三、第一次PUT

好了,现在可以PUT了。用Linux下的nc命令来进行连接。

nc -v www.baidu.com 80
root@bb:/etc# nc -v 192.168.163.1
nc: 192.168.163.1 (192.168.163.1) [http-alt] open  
/*在得到如上输出之后,再将PUT包的内容贴到命令行中,回车*/  
PUT /test.txt HTTP/1.1
Content-Length:
Accept-Language: en-US
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Win32)
Host: 192.168.163.1: hello world
/*发送的PUT包到此为止,以下为收到的数据包*/
HTTP/1.1 Internal Server Error
Date: Wed, Apr :: GMT
Server: Apache/2.2. (Win64) PHP/5.3. DAV/
Content-Length:
Connection: close
Content-Type: text/html; charset=iso-- <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title> Internal Server Error</title>
</head><body>
<h1>Internal Server Error</h1>
<p>The server encountered an internal error or misconfiguration and was unable to complete your request.</p>
<p>Please contact the server administrator, admin@localhost and inform them of the time the error occurred,and anything you might have done that may have caused the error.</p>
<p>More information about this error may be available in the server error log.</p>
</body></html>

好像不对啊,500是服务器内部错误啊。好吧好吧,我们去看看主机的Apache日志。

四、再次配环境

主机用的是WAMP,日志在/wamp/logs/apache_error.log。找到对应的那一条:

通过浏览器搜索,又找到一篇日志。Linux(CentOS) 服务端搭建与配置,原来用HTTP - PUT还要添加一个什么锁。

所以解决方法是:在Apache配置文件中,也就是httpd.conf,增加一行,设定webDAV锁位置。再次重启所有服务。
DavLockDB  DavLock    #目录没有就创建(DavLock 为文件名,应该有的目录结构是\wamp\bin\apache\Apache2.2.21\DavLock)
五、终于成功PUT
root@bb:/etc# nc -v 192.168.163.1
nc: 192.168.163.1 (192.168.163.1) [http-alt] open
PUT /test.txt HTTP/1.1
Content-Length:
Accept-Language: en-US
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Win32)
Host: 192.168.163.1: hello world
HTTP/1.1 Created
Date: Wed, Apr :: GMT
Server: Apache/2.2. (Win64) PHP/5.3. DAV/
Location: http://192.168.163.1:8080/test.txt
Content-Length:
Content-Type: text/html; charset=ISO-- <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title> Created</title>
</head><body>
<h1>Created</h1>
<p>Resource /test.txt has been created.</p>
</body></html>

0。0 差不多这样,之后有更多关于PUT的经验,再分享

HTTP - PUT 上传文件/Shell的更多相关文章

  1. HTTP - PUT 上传文件/Shell (二)

    上一篇文章 HTTP - PUT 上传文件/Shell 讲到自己搭了一个环境,去测试HTTP - PUT上传Shell.最近又遇到几个PUT上传的例子,也成功上传了几次,来分享一下思密达. 0x00 ...

  2. linux 执行远程linux上的shell脚本或者命令以及scp 上传文件到ftp--免密码登陆

    场景:在linux A 上执行Linux B上的shell脚本和命令 步骤1.设置ssh免登陆 1.SSH无密码登录 # 本地服务器执行(A机器):生成密钥对 ssh-keygen -t dsa -P ...

  3. 批量上传文件到HDFS的Shell脚本

    在做Hadoop数据挖掘项目的时候,我们第一步是源数据的获取,即把相应的数据放置到HDFS中,以便Hadoop进行计算,手动将文件上传到HDFS中,未免太费时费力,所以我们可以采取像Flume一样的框 ...

  4. shell中利用ftp 上传文件夹功能

    我们知道ftp 只能用来上传或者下载文件,一次单个或者多个,怎么实现将文件夹的上传和下载呢? 可以利用先在remote ip上建立一个相同的文件夹目录,然后将文件放到各自的目录中去 1.循环遍历出要上 ...

  5. Shell脚本调用ftp上传文件

    Shell脚本调用ftp上传文件 1.脚本如下 ftp -n<<! open x.x.x.x ###x.x.x.x为ftp地址 user username password ###user ...

  6. C#远程执行Linux系统中Shell命令和SFTP上传文件

    一.工具:SSH.Net 网址:https://github.com/sshnet/SSH.NET 二.调用命令代码: Renci.SshNet.SshClient ssh = "); ss ...

  7. Go连接到Linux服务器进行操作-执行shell命令&&上传文件

    Go连接到Linux服务器进行操作 使用密码连接Linux服务器 package main import ( "fmt" "golang.org/x/crypto/ssh ...

  8. scp 上传文件到多个服务器节点

    参考:scp批量上传文件到多台机器上(升级版) 实测,代码可运行. 1.如果遇到syntax error near unexpected token问题,基本是由于windows环境下编写的shell ...

  9. c#连接SFTP上传文件

    名词解释(百度百科) sftp是Secure File Transfer Protocol的缩写,安全文件传送协议.可以为传输文件提供一种安全的加密方法.sftp 与 ftp 有着几乎一样的语法和功能 ...

随机推荐

  1. MySQL(4):数据表创建

    数据库是表的容器,表,必须属于某个数据库. 可以通过.语法,指明数据表所属的数据库 比如:database.table 进行表操作的时候,都会指定当前的默认数据库. use db_name; 1.创建 ...

  2. android 下载instagram动态中图片的demo

    最近迷上了刷instagram,里面的很多照片都特别喜欢,于是就想分享到朋友圈或者微博,奈何墙外不知墙内苦啊.于是只能想办法将它们保存到本地,既可以做壁纸也能分享给别人. 我发现每条ins的动态在ap ...

  3. Linux shell之数组

    引言 在Linux平台上工作,我们经常需要使用shell来编写一些有用.有意义的脚本程序.有时,会经常使用shell数组.那么,shell中的数组是怎么表现的呢,又是怎么定义的呢?接下来逐一的进行讲解 ...

  4. nativescript环境搭建

    参考官网 http://docs.nativescript.org/setup/ns-cli-setup/ns-setup-win.html

  5. HTML5吧!少年

     一.为了能使IE9以下的IE浏览器也能支持html5的标签,所以首先得在文档头部用条件注释的方法引入那段著名的代码. 1 2 3 <!--[if lt IE 9]> <script ...

  6. session的介绍与简单使用

    cookie由浏览器带着,容易被篡改因为cookie很容易被篡改,所以cookie用来记住用户名,记住浏览历史等安全性要求不高的地方可以用sessin技术session技术将信息存入服务器,然后再给客 ...

  7. 关于.NET编译的目标平台(AnyCPU,x86,x64)

    转载:http://blog.sina.com.cn/s/blog_78b94aa301014i8r.html 今天有项目的代码收到客户的反馈,要求所有的EXE工程的目标平台全部指定成x86,而所有D ...

  8. 在Ubuntu Linux下安装Code::Blocks和Eclipse CDT

           最近小白由于有工作学习的需要,要尝试在Linux下进行C++编程.所以特地花了一点时间研究一下Linux下的C++的IDE.最后我尝试了使用Code::Blocks和Eclipse两个著 ...

  9. linux安装缺失服务

    sudo apt-get install ssh Reading package lists... Done Building dependency tree... Done Package ssh ...

  10. c/c++中const使用总结(金典)

    原文地址:http://www.cnblogs.com/yc_sunniwell/archive/2010/07/14/1777416.html 个人总结:          (1)const只对它左 ...