it-swarm-vi.com

Tải tệp lên bằng JInput! khả thi?

tôi sử dụng một biểu mẫu html trên một trong những bài viết của mình, tôi thành công trong việc lấy các giá trị từ biểu mẫu bằng JInput!

$input = JFactory::getApplication()->input;

Nhưng bây giờ tôi cần thêm một tải lên tệp đầu vào vào biểu mẫu:

<input type="file" name="upload">

Làm cách nào để tải lên và lưu tệp trên máy chủ bằng JInput!?

Tải lên tệp với các hạn chế, chỉ cho phép phạm vi tệp cụ thể.

6
saibbyweb

Ngoài câu trả lời của @ Bakual, ​​hãy giả sử bạn là một hình thức đơn giản như vậy:

<form name="upload" method="post" enctype="multipart/form-data">
    <input type="file" name="file_upload">
</form>

Để tải lên tệp khi nhấn nút gửi, bạn có thể sử dụng:

$input = JFactory::getApplication()->input;
$file  = $input->files->get('file_upload'); 

// Cleans the name of teh file by removing weird characters
$filename = JFile::makeSafe($file['name']); 

$src  = $file['tmp_name'];
$dest = JPATH_BASE . '/modules/mod_mymodule/' . $filename;

if (JFile::upload($src, $dest)) 
{
      // The file has successfully been uploaded :)
} 
else 
{
      // Oh crap, something happened. Run!
}

Rõ ràng bạn sẽ cần thay đổi đường dẫn ($dest) cho bất cứ điều gì phù hợp với nhu cầu của bạn.

Có rất nhiều xác nhận bạn nên thực hiện khi xử lý tải lên, rất nhiều trong số đó có thể được tìm thấy trên liên kết bạn đã được cung cấp:

http://docs.j Joomla.org/How_to_use_the_filesystem_package

16
Lodder

Có hai điều khó khăn mà mọi người thường rơi vào khi tải lên tệp bằng JInput:

  • Thẻ biểu mẫu của bạn cần chứa enctype="multipart/form-data"
  • Mảng tệp được lấy bằng $input->files->get('upload');
7
Bakual