Tôi có thể điền php://input
bằng dữ liệu nhị phân để kiểm tra tải lên bằng cách nào? (Hoặc nếu không hãy thử tải lên chunked). Tôi đang sử dụng plupload làm lối vào của mình và tôi muốn hủy phụ trợ của mình.PHPUnit kiểm tra dữ liệu nhị phân tải lên
Đây là đoạn mã tôi muốn thử nghiệm:
public function recieve($file = 'file')
{
// Get parameters
$chunk = isset($_REQUEST["chunk"]) ? intval($_REQUEST["chunk"]) : 0;
$chunks = isset($_REQUEST["chunks"]) ? intval($_REQUEST["chunks"]) : 0;
$fileName = isset($_REQUEST["name"]) ? $_REQUEST["name"] : '';
$targetDir = $this->_uploadDir;
// Clean the fileName for security reasons
$fileName = preg_replace('/[^\w\._]+/', '_', $fileName);
// Make sure the fileName is unique but only if chunking is disabled
if ($chunks < 2 && file_exists($targetDir . DIRECTORY_SEPARATOR . $fileName)) {
$ext = strrpos($fileName, '.');
$fileName_a = substr($fileName, 0, $ext);
$fileName_b = substr($fileName, $ext);
$count = 1;
while (file_exists(
$targetDir . DIRECTORY_SEPARATOR . $fileName_a . '_' . $count . $fileName_b)) {
$count++;
}
$fileName = $fileName_a . '_' . $count . $fileName_b;
}
$filePath = $targetDir . DIRECTORY_SEPARATOR . $fileName;
// Create target dir
if (!file_exists($targetDir)) {
if (!is_writable(dirname($targetDir))) {
$this->_messages[] = 'Cannot write to ' . dirname($targetDir) . ' for mkdir';
return false;
}
mkdir($targetDir, 0777, true);
}
// Check permissions
if (!is_writable($targetDir)) {
$this->_messages[] = 'Unable to write to temp directory.';
return false;
}
// Look for the content type header
$contentType = null;
if (isset($_SERVER["HTTP_CONTENT_TYPE"]))
$contentType = $_SERVER["HTTP_CONTENT_TYPE"];
if (isset($_SERVER["CONTENT_TYPE"]))
$contentType = $_SERVER["CONTENT_TYPE"];
// Handle non multipart uploads older WebKit versions didn't support multipart in HTML5
if (strpos($contentType, "multipart") !== false) {
if (isset($_FILES[$file]['tmp_name']) && is_uploaded_file($_FILES[$file]['tmp_name'])) {
// Open temp file
$out = fopen("{$filePath}.part", $chunk == 0 ? "wb" : "ab");
if ($out) {
// Read binary input stream and append it to temp file
$in = fopen($_FILES[$file]['tmp_name'], "rb");
if ($in) {
while ($buff = fread($in, 4096)) {
fwrite($out, $buff);
}
} else {
$this->_messages[] = 'Failed to open input stream.';
return false;
}
fclose($in);
fclose($out);
unlink($_FILES[$file]['tmp_name']);
} else {
$this->_messages[] = 'Failed to open output stream.';
return false;
}
} else {
$this->_messages[] = 'Failed to move uploaded file.';
return false;
}
} else {
// Open temp file
$out = fopen("{$filePath}.part", $chunk == 0 ? "wb" : "ab");
if ($out) {
// Read binary input stream and append it to temp file
$in = fopen("php://input", "rb");
if ($in) {
while ($buff = fread($in, 4096)) {
fwrite($out, $buff);
}
} else {
$this->_messages[] = 'Failed to open input stream.';
return false;
}
fclose($in);
fclose($out);
} else {
$this->_messages[] = 'Failed to open output stream.';
return false;
}
}
// Check if file upload is complete
if (!$chunks || $chunk == $chunks - 1) {
// Strip the temp .part suffix off
rename("{$filePath}.part", $filePath);
return $filePath;
}
}
* Sửa:
Nhập mã hơn, để hiển thị những gì tôi muốn kiểm tra đơn vị
Bạn có muốn ** đơn vị ** hoặc kiểm tra tích hợp này không? Nếu bạn muốn tích hợp kiểm tra nó: Để những gì mở rộng? Bao gồm cả đi qua máy chủ web hay không ?. $ _REQUEST dường như đề xuất một bài kiểm tra tích hợp nhưng tôi muốn hỏi trước khi trả lời. – edorian
Tôi muốn đơn vị kiểm tra mã máy chủ nhận tải lên, để xác minh rằng bất kỳ tệp tải lên nào sẽ được xử lý như mong đợi –
Xin lỗi vì đã hỏi lại nhưng tôi không theo dõi. Bạn có thể ether UNIT kiểm tra đoạn mã này hoặc kiểm tra tệp tải lên thông qua máy chủ web, cả hai thứ đều không có ý nghĩa ngữ nghĩa. Nếu bạn muốn tải lên tệp "giả mạo" là bài kiểm tra tích hợp. Có lẽ chỉ là những từ là vấn đề ở đây? http: // stackoverflow.com/questions/516572/am-i-unit-testing-or-integration-testing – edorian