PHP上传文件Server

搭建PHP提交文件服务:

upload.php

<?php
if ($_FILES["file"]["name"] != "") 
{
  if ($_FILES["file"]["error"] > 0) 
  {
    echo "Return Code: " . $_FILES["file"]["error"] . "<br />";
  } 
  else 
  {
    if (file_exists("data/" . $_FILES["file"]["name"])) 
    {
      echo $_FILES["file"]["name"] . " already exists. ";
    } 
    else 
    {
      move_uploaded_file($_FILES["file"]["tmp_name"], "data/" . $_FILES["file"]["name"]);
      echo "upload " . $_FILES["file"]["name"] . " succ! " . "@[". date('Y-m-d H:i') . "]";
    }
  }
} 
else 
{
  echo "file error";
}
?>

方法一:HTML方式提交:

upload.html

<HTML>
<HEAD><TITLE>PHP-文件上传</TITLE>
<meta http-equiv='Content-Type' content='text/html; charset=UTF-8'>
</HEAD>
<BODY>
<form action="upload.php" method="post" enctype="multipart/form-data">
	<input type="file" name="file"/>
	<input type="submit" class="btn btn-primary btn-large" value="上传文件" />
</form>
</BODY>
</HTML>

方法二:使用curl提交

CURL命令行方式:

curl -F "action=upload.php" -F "method=post" -F "file=@qq.html" http://localhost/nsplatform/php_svr/upload.php

效果分别如下:

014151_SGpv_123914.png

法三:使用VS C++实现上传功能(windows)

环境:vs2008 + curl库 (http://curl.haxx.se/download/curl-7.26.0.zip)

步骤:

  1. 安装VS2008 ....略

  2. 下载解压curl-7.26.0 进入lib 打开dsp或dsw文件,默认转换

  3. 编译运行会再 lib下生成如 lib/Debug/libcurl.lib [这就是我们要依赖的库]

  4. 新建一个项目如my_libcurl_test编写代码如下:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <curl/curl.h>

#define POSTFIELDS "?action=upload&method=post"
#define LOGNAME "upload.log"

//回调用于写日志
size_t write_data(void *buffer, size_t size, size_t nmemb, void *userp);

int main(int argc, char *argv[]) {

	if (argc != 3) 
	{
		printf("Usage: %s fileToUpload uploaderUrl\n", argv[0]);
		printf("Eg   : %s a.tgz http://localhost/nsplatform/php_svr/upload.php\n", argv[0]);
		exit(0);
	}

    CURL *curl;
    CURLcode res;
    FILE *fptr;
    struct curl_slist *http_header = NULL;
    
	int nErr = 0;
    if (( nErr = fopen_s(&fptr, LOGNAME, "at")) != 0) {
        fprintf(stderr, "fopen file error: %s\n", LOGNAME);
        exit(1);
    }
    
    curl = curl_easy_init();
    
    curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, write_data);
    curl_easy_setopt(curl, CURLOPT_WRITEDATA, fptr);
    
    struct curl_httppost *formpost = 0;
    struct curl_httppost *lastptr  = 0;

    curl_formadd(&formpost, &lastptr, CURLFORM_PTRNAME, "reqformat", CURLFORM_PTRCONTENTS, "plain", CURLFORM_END);
    curl_formadd(&formpost, &lastptr, CURLFORM_PTRNAME, "file", CURLFORM_FILE, argv[1], CURLFORM_END);
    curl_easy_setopt(curl, CURLOPT_URL, argv[2]);
    curl_easy_setopt(curl, CURLOPT_HTTPPOST, formpost);
    
    res = curl_easy_perform(curl);
    curl_easy_cleanup(curl);
}

size_t write_data(void *buffer, size_t size, size_t nmemb, void *userp) 
{
    FILE *fptr = (FILE*)userp;
    fwrite(buffer, size, nmemb, fptr);
	return 0;
}

5.配置如下

c/c++->General->Addition Include Diretories: D:\\...........\\curl-7.26.0\include

c/c++->Preprocessor->Preprocessor Definitions: WIN32;_DEBUG;CONSOLE;CURL_STATICLIB

Linker->Input->Additional Dependencies: libcurl.lib Ws2_32.lib wldap32.lib 

161359_0byo_123914.png

6.构建成功后运行命令:

 my_libcurl_test.exe my_libcurl_test.exp http://localhost/nsplatform/php_svr/upload.php

 upload.log日志:

 upload my_libcurl_test.exe succ! @[2014-06-02 08:20]





转载于:https://my.oschina.net/sanpeterguo/blog/268871

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值