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";
}
?>