我嘗試使用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
目錄中寫入權限。
你能告訴我們文件夾的文件權限嗎? – Ronald
嗨@Ronald,我編輯了我的問題,Apache和PHP實際上可以在'/ tmp'中寫入文件 –
你確定嗎?爲什麼用戶和用戶組仍然是「root root」? – Ronald