2016-11-15 21 views
0

我嘗試使用Xamarin.Forms應用程序上傳文件到服務器。Apache應用程序/八位字節流創建一個空文件

var content = new MultipartFormDataContent(); 
content.Add(new StreamContent(new MemoryStream(img)), "file", "image.jpg"); 
httpClient.PostAsync(uri, MultipartFormDataContent); 

我使用PHP和Symfony UploadedFile類在服務器上接收文件。 這部分工作得很好在我的本地(macOS Sierra Version 10.12.1/Apache/2.4.23 (Unix))當我做我的testings我能夠接收文件:

"file" => UploadedFile {#217 ▼ 
    -test: false 
    -originalName: "image.jpg" 
    -mimeType: "application/octet-stream" 
    -size: 8112955 
    -error: 0 
    path: "/Applications/MAMP/tmp/php" 
    filename: "phpWyUBHM" 
    basename: "phpWyUBHM" 
    pathname: "/Applications/MAMP/tmp/php/phpWyUBHM" 
    extension: "" 
    realPath: "/Applications/MAMP/tmp/php/phpWyUBHM" 
    writable: false 
    readable: false 
    executable: false 
    file: false 
    dir: false 
    link: false 
    } 

Apache的配置:

upload_max_filesize 32M 32M 
post_max_size  32M 32M 

所以我能夠移動該文件,它是我上傳的實際圖像。

當我嘗試做我的演示服務器上(Ubuntu 14.04.5 LTS/Apache/2.4.7 (Ubuntu))接收到的文件實際上是空的,它的大小爲0

"file" => UploadedFile {#217 ▼ 
    -test: false 
    -originalName: "image.jpg" 
    -mimeType: "application/octet-stream" 
    -size: 0 
    -error: 0 
    path: "/tmp" 
    filename: "phppFr9Pr" 
    basename: "phppFr9Pr" 
    pathname: "/tmp/phppFr9Pr" 
    extension: "" 
    realPath: false 
    writable: false 
    readable: false 
    executable: false 
    file: false 
    dir: false 
    link: false 
    } 

Apache的配置:

upload_max_filesize 1000M 1000M 
post_max_size  1000M 1000M 

所以我猜這個問題來自Apache,但我一直在尋找很長時間,找不到任何提示來解決這個問題。

謝謝。


編輯1

/tmp目錄的權限是:

drwxrwxrwt 13 root root 4096 Nov 15 14:19 

如果我嘗試後與郵差的圖像時,/tmp目錄以及創建:

"file" => UploadedFile {#217 
    -test: false 
    -originalName: "image.jpg" 
    -mimeType: "image/jpeg" 
    -size: 8112955 
    -error: 0 
    path: "/tmp" 
    filename: "php2LIEcm" 
    basename: "php2LIEcm" 
    pathname: "/tmp/php2LIEcm" 
    extension: "" 
    realPath: false 
    writable: false 
    readable: false 
    executable: false 
    file: false 
    dir: false 
    link: false 
    } 

所以它意味着apache和php h在此/tmp目錄中寫入權限。

+0

你能告訴我們文件夾的文件權限嗎? – Ronald

+0

嗨@Ronald,我編輯了我的問題,Apache和PHP實際上可以在'/ tmp'中寫入文件 –

+0

你確定嗎?爲什麼用戶和用戶組仍然是「root root」? – Ronald

回答

0

區別在於/tmp的權限。執行腳本的用戶(如Apache或php)應具有從write/tmpread的權限。

+0

嗨,我編輯了我的問題,Apache和PHP實際上可以在'/ tmp'中寫入文件 –

相關問題