Ben bir dosya yüklemek ve php sayfanın içine POST için bir yol gerekir
php apache sunucu üzerinde
ve benim masaüstü uygulamasında bu c kodu kullanabilirsiniz:
Bu c kodu ile bir soket bulunuyor
Ben Programı çalıştırdığınızda, alabilirsiniz
The file size is 772906
open server ok
The file size is 772906
Connect to server ok
Open file ok
fread 102400 bytes, Sending 102400 bytes
fread 102400 bytes, Sending 102400 bytes
fread 102400 bytes, Sending 102400 bytes
fread 102400 bytes, Sending 102400 bytes
fread 102400 bytes, Sending 102400 bytes
fread 102400 bytes, Sending 102400 bytes
fread 102400 bytes, Sending 102400 bytes
fread 56106 bytes, Sending 56106 bytes
Sending file Finished!
result: Return Code: 
Upload: 
Type: 
Size: 0 Kb
Temp file: 
Stored in: 
Ama dosya mevcut değil.
Ben belki de mümkün HTTP protokolü sanırım, ama ben nasıl bilmiyorum.
Bana ayrıntıları söylemek istiyorsunuz?
Çok teşekkürler.
#include <stdio.h>
#include <stdlib.h>
#include <errno.h>
#include <string.h>
#include <unistd.h>
#include <pthread.h>
#include <netinet/in.h>
#include <sys/socket.h>
#include <sys/wait.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <arpa/inet.h>
int main(){
    int sockfd, numbytes;
    FILE *fp;
    char buf[300];
    char filename[10]="1.jpg";
    char send1[100];
    struct sockaddr_in address;
    struct stat filestat;
    int  retval;
    char *str="GET /some address/upload_file.php?";
    //Get file stat
    if ( lstat(filename, &filestat) < 0){
        exit(1);
    }
    printf("The file size is %lu\n", filestat.st_size);
    //TCP socket
    if ( ( sockfd = socket(AF_INET, SOCK_STREAM, 0) ) == -1 ){
        perror("socket");
        exit(1);
    }else{
    printf("open server ok\n");
    }
    #if 1
        //Initial, connect to port 80 
        address.sin_family = AF_INET;
        address.sin_port = htons(80);
        address.sin_addr.s_addr = inet_addr("xx.xx.xx.xx");
        bzero( &(address.sin_zero), 8 );
    #endif
    //Get file stat
    if ( lstat("1.jpg", &filestat) < 0){
        exit(1);
    }
    printf("The file size is %lu\n", filestat.st_size);
    fp = fopen("1.jpg", "rb");
    //Connect to server
    if ( connect(sockfd, (struct sockaddr*)&address, sizeof(struct sockaddr)) == -1){
        perror("connect");
        exit(1);
    }else{
    printf("Connect to server ok\n");
    }
    if ( (fp = fopen(filename,"rb")) == NULL){
            perror("fopen");
            exit(1);
    }else{
    printf("Open file ok\n");
    }   
    sprintf(send1,"%s\n",str);
    retval= send(sockfd,send1,sizeof(send1),0);
    //Sending file
    while(!feof(fp)){
        numbytes = fread(buf, sizeof(char), sizeof(buf), fp);
        //printf("fread %d bytes, ", numbytes);
        numbytes = write(sockfd, buf, numbytes);
        //printf("Sending %d bytes\n",numbytes);
    }
    printf("Sending file Finished!\n");
    //Receive from server
    if ( (numbytes = recv(sockfd, buf, sizeof(buf)+1,0) ) == -1 ){
            perror("recv");
            exit(1);
        }
    printf("result: %s\n\n\n", buf);
    fclose(fp);
    close(sockfd);
    return 0;
} 
Benim php:
<?php
if (1){ 
if ($_FILES["file"]["error"] > 0){ 
        echo "Return Code: " . $_FILES["file"]["error"] . "<br />"; 
    }else{ 
         echo "Return Code: " . $_FILES["file"]["error"] . "<br />"; 
        echo "Upload: " . $_FILES["file"]["name"] . "<br />"; 
        echo "Type: " . $_FILES["file"]["type"] . "<br />"; 
        echo "Size: " . ($_FILES["file"]["size"] / 1024) . " Kb<br />"; 
        echo "Temp file: " . $_FILES["file"]["tmp_name"] . "<br />"; 
        //move_uploaded_file($_FILES["file"]["tmp_name"], $_FILES["file"]["name"]);
        move_uploaded_file($_FILES["file"]["tmp_name"], "5446");  
        echo "Stored in: " .  $_FILES["file"]["name"]; 
    } 
}else{ 
    echo "Invalid file"; 
} 
?>
