我有一个upload.php脚本,我可以从移动设备访问,将文档上传到。
每当我上传某种图像时,都是< 1MB,它完美地运行,但是,当上传大于该文件的文件时,它将被破坏。
上传脚本还会重命名文件,并从中删除扩展名,如果这可能与错误有关...
这是脚本:
<?php header('Access-Control-Allow-Origin: *');
//Read parameters - I use this when I'm adding the file to the database.
$documentuniqueid = addslashes($_REQUEST['documentuniqueid']);
$type = addslashes($_REQUEST['type']);
$notes = addslashes($_REQUEST['notes']);
//Get file name
$filename = urldecode($_FILES["file"]["name"]);
// Check for errors
if($_FILES['file']['error'] > 0){
outputJSON('An error ocurred when uploading.');
}
// Check filetype
//if($_FILES['file']['type'] != 'image/png'){
// outputJSON('Unsupported filetype uploaded.');
//}
// Check filesize
if($_FILES['file']['size'] > 500000){
outputJSON('File uploaded exceeds maximum upload size.');
}
// Check if the file exists
if(file_exists('upload/' . $_FILES['file']['name'])){
outputJSON('File with that name already exists.');
}
// Upload file
if(!move_uploaded_file($_FILES['file']['tmp_name'], 'documents/'.$documentuniqueid)){
outputJSON('Error uploading file - check destination is writeable.');
}
?>
下载脚本如下所示:
<?php
sleep(2);
$document_id = addslashes($_REQUEST['document_id']);
if($document_id != "") {
$real_document_name = GetRealFileName($document_id);
if($real_document_name != "ERROR") {
$original_filename = "http://www.whatever.com/documents/".$document_id;
$new_filename = $real_document_name;
//Headers
$finfo = finfo_open(FILEINFO_MIME_TYPE);
header('Content-Type: '.finfo_file($finfo, $original_filename));
header("Content-Length: " . filesize($original_filename));
header('Content-disposition: attachment; filename="'.$new_filename.'"');
//clean up
ob_clean();
flush();
readfile($original_filename);
exit();
}
}
?>
有关改进的提示吗? 或任何见解,为什么这不正常? 您可以看到我在上传时将文件重命名为随机字符串,并在下载时将其重命名,我查找文件名并将其重命名为原始文件名。
对于小文件大小,它可以正常工作。
我还要注意,即使我手动进入FTP,下载上传的文件并自行添加正确的扩展程序,我也无法打开它们。图像看起来搞砸了,例如PDF已损坏。
PHP DETAILS:
post_max_size和upload_max_filesize都设置为100M。 max_file_uploads设置为20,file_uploads设置为ON max_input_time:60 max_execution_time:3000
答案 0 :(得分:2)
增加php.ini
内/etc/php5/apache2/
文件的上传文件属性的大小。
集:
upload_max_filesize = 50M
答案 1 :(得分:0)
我认为您的主机空间不足,请尝试通过FTP "FileZilla for example"
上传并查看日志消息
也不要忘记检查这些值
答案 2 :(得分:0)
保留您需要更改的文件的原始名称
move_uploaded_file($ _ FILES [&#39; file&#39;] [&#39; tmp_name&#39;],&#39; documents /&#39;。$ documentuniqueid) < / p>
要 move_uploaded_file - move_uploaded_file($ _ FILES [&#39; file&#39;] [&#39; tmp_name&#39;],$ _FILES [&#39; file&#39;] [&#39; name&#39;] )强>
或在上传脚本中写下此行以查看有关文件的信息
$_FILES - 的的print_r($ _ FILES); 强>
抱歉我的英语,我希望我帮助过。