10/10/2018, 11:13

dùng codeigniter & swfupload để upload file

dùng codeigniter & swfupload để upload file.
mình đả kết hợp nhưng với lệnh moveuploaded của php thì được nó upload ok, nhưng khi thử dùng thư viện upload của codeigniter thì không hoạt động. Ai có kinh nghiệm thì chỉ mình với ngồi cả ngày không tìm ra nguyên nhân, đả test dùng cái thư viện upload codeigniter + html <input type="file"....> thì không vấn đề gì up được.
minhmoc viết 13:13 ngày 10/10/2018
bạn dùng copy thử xem

$filestatus = copy($file_temp,$file_path."/".$file_name);
s.code viết 13:22 ngày 10/10/2018
Chắc đặt tên chưa chính xác.

Những kinh nghiệm khi mình dùng flash để upload:

+ Không truy xuất dc cookie và session (vì flash mở 1 connection riêng biệt không liên quan đến trình duyệt) => nếu upload dưới quyền login thì rất khó khăn. Tuy nhiên không phải ko có cách khắc phục.
+ Flash nhìn có vẻ upload nhiều file 1 lúc. Nhưng thực ra nó upload từng file một. Có nghĩ trang php đón nhận khi flash upload file lên chỉ thấy dc 1 file trong mỗi lần chạy. Như vậy là nếu flash upload lên 5 file đồng nghĩa file php tiếp nhận post lên 5 lần liên tục.
ghetlamminh viết 13:22 ngày 10/10/2018
chào các bạn, mình cũng biết là nhìn vào có vẽ cái swfupload up nhiều cùng 1 lúc nhưng thực chất nó up từng file 1, cứ mõi lần up thì mõi lần chạy file upload.php, do mình cũng mới tìm hiễu php đặc biệt là codeigniter nên mình dùng thư viẹn upload của nó đễ cho tiện nhưng mình thử code thì không chạy nó báo lỗi là file không phù hợp. nhưng mình đã thử lệnh = php move_uploaded_file thì chạy cụ thể là
mình dùng Application Demo
file html
PHP Code:
...
upload_url: "<?=base_url()?>index.php/test/upload",
post_params: {"PHPSESSID": "<?php echo session_id(); ?>"},
file_post_name : "Filedata",
....
file controller
PHP Code:
...
function 
upload(){
if (isset(
$_POST***91;"PHPSESSID"***93;)) {
session_id($_POST***91;"PHPSESSID"***93;);
}

    
session_start();
    
$config***91;'upload_path'***93; = 'uploads/';
    
$config***91;'allowed_types'***93; = 'gif|jpg|jpe|jpeg|png';
    
$config***91;'max_size'***93;    = '2000';
    
$config***91;'remove_spaces'***93; = TRUE;
    
$config***91;'encrypt_name'***93; = TRUE;
    
    
$this->load->library('upload'$config);
    
$this->upload->do_upload('Filedata');
   echo 
$this->upload->display_errors();
... 
thi nó báo lỗi "The filetype you are attempting to upload is not allowed."
còn thay đoạn mã
PHP Code:
$uploadfile basename($_FILES***91;"Filedata"***93;***91;"name"***93;); 
move_uploaded_file($_FILES***91;"Filedata"***93;***91;"tmp_name"***93;,$uploadfile); 
thì chạy được híc mình không biết đâu mà sửa.
s.code viết 13:18 ngày 10/10/2018
Xin cảnh báo rằng debug trong trường hợp này rất khó. Tất cả nội dung lỗi hầu như bạn ko thể nhìn thấy dc. Dạo đó tôi bug cái này phải dùng đến ob_start() và ob_get_content() để lấy dc nội dung lỗi đoạn sử lý upload. và save thành file.

Nói chung rất vất vả.
ghetlamminh viết 13:25 ngày 10/10/2018
debug cua SWFUPLOAD đây ạ
PHP Code:
---SWFUpload Instance Info---
Version2.2.0 2009-03-25
Movie Name
SWFUpload_0
Settings
:
    
upload_url:               http://localhost/web/index.php/test/upload
    
flash_url:                http://localhost/web/js/swfupload.swf?preventswfcaching=979397830842
    
use_query_string:         false
    requeue_on_error
:         false
    http_success
:             
    
assume_success_timeout:   0
    file_post_name
:           Filedata
    post_params
:              ***91;object Object***93;
    
file_types:               *.jpg;*.gif
    file_types_description
:   JPG Images
    file_size_limit
:          2 MB
    file_upload_limit
:        0
    file_queue_limit
:         0
    debug
:                    true
    prevent_swf_caching
:      true
    button_placeholder_id
:    spanButtonPlaceholder
    button_placeholder
:       Not Set
    button_image_url
:         http://localhost/web/images/SmallSpyGlassWithTransperancy_17x18.png
    
button_width:             180
    button_height
:            18
    button_text
:              <span class="button">Select Images <span class="buttonSmall">(2 MB Max)</span></span>
    
button_text_style:        .button font-familyHelveticaArialsans-seriffont-size12pt; } .buttonSmall font-size10pt; }
    
button_text_top_padding:  0
    button_text_left_padding
18
    button_action
:            -110
    button_disabled
:          false
    custom_settings
:          ***91;object Object***93;
Event Handlers:
    
swfupload_loaded_handler assigned:  false
    file_dialog_start_handler assigned
false
    file_queued_handler assigned
:       false
    file_queue_error_handler assigned
:  true
    upload_start_handler assigned
:      false
    upload_progress_handler assigned
:   true
    upload_error_handler assigned
:      true
    upload_success_handler assigned
:    true
    upload_complete_handler assigned
:   true
    debug_handler assigned
:             true

SWF DEBUG
SWFUpload Init Complete
SWF DEBUG

SWF DEBUG: ----- SWF DEBUG OUTPUT ----
SWF DEBUGBuild Number:           SWFUPLOAD 2.2.0
SWF DEBUG
movieName:              SWFUpload_0
SWF DEBUG
Upload URL:             http://localhost/web/index.php/test/upload
SWF DEBUGFile Types String:      *.jpg;*.gif
SWF DEBUG
Parsed File Types:      jpg,gif
SWF DEBUG
HTTP Success:           0
SWF DEBUG
File Types DescriptionJPG Images (*.jpg;*.gif)
SWF DEBUGFile Size Limit:        2097152 bytes
SWF DEBUG
File Upload Limit:      0
SWF DEBUG
File Queue Limit:       0
SWF DEBUG
Post Params:
SWF DEBUG:                         PHPSESSID=451338aa05dde52b47fa45865064a64e
SWF DEBUG
: ----- END SWF DEBUG OUTPUT ----
SWF DEBUG
Removing Flash functions hooks (this should only run in IE and should prevent memory leaks)
SWF DEBUGEventfileDialogStart Browsing filesMulti SelectAllowed file types: *.jpg;*.gif
SWF DEBUG
Select HandlerReceived the files selected from the dialogProcessing the file list...
SWF DEBUGEventfileQueued File IDSWFUpload_0_0
SWF DEBUG
EventfileDialogComplete Finished processing selected filesFiles selected1. Files Queued1
SWF DEBUG
StartUploadFirst file in queue
SWF DEBUG
EventuploadStart File IDSWFUpload_0_0
SWF DEBUG
: Global Post ItemPHPSESSID=451338aa05dde52b47fa45865064a64e
SWF DEBUG
ReturnUploadStart(): File accepted by startUpload event and readied for upload.  Starting upload to http://localhost/web/index.php/test/upload for File ID: SWFUpload_0_0
SWF DEBUGEventuploadProgress (OPEN): File IDSWFUpload_0_0
SWF DEBUG
EventuploadProgressFile IDSWFUpload_0_0Bytes34475. Total34475
SWF DEBUG
EventuploadSuccessFile IDSWFUpload_0_0 Response Receivedtrue Data: <p>The filetype you are attempting to upload is not allowed.</p>
SWF DEBUGEventuploadComplete Upload cycle complete

[=========> Bổ sung bài viết <=========]

khi dùng lệnh
PHP Code:
...
 
print_r($_FILES***91;'Filedata'***93;);
... 
thì nó in ra thế này
PHP Code:
Array(
***91;
name***93;=>9.jpg
***91;type***93;=>application/octet-stream
***91;tmp_name***93;=>D:\\xampp\tmp\php15.tmp
***91;eror***93;=>0
***91;size***93;=>77648


[=========> Bổ sung bài viết <=========]

mình lên codeigniter forum học hỏi và cũng đã chạy được rồi.
cvcx viết 13:27 ngày 10/10/2018
Dùng cái SWFUPLOAD này xong không biết làm sao trả lại name của file để add vào database nhỉ ???
Bài liên quan
0