PDA

View Full Version : File upload php ? tmp_name được lưu trong thời gian bao lâu?



chameron
11-06-2010, 17:31
em submit form lên,
nhưng chưa muốn upload file lên ngay mà
lưu hết $_FILES vô session ,
thế em hỏi là các file được lưu tạm sẽ tồn tại bao lâu? để em biết đường quay lại dùng thông tin trong session để upload lên ?

cuipap
11-06-2010, 18:45
chà mình cũng muốn biết vụ này, xin lỗi ko trả lời được, up dùm + đánh dấu mai mốt quay lại coi cao thủ trả lời vậy

thuyduongcd
11-06-2010, 19:39
Dĩ nhiên là chỉ có giá trị trong trang đó. Khi nào trang đó xử lý xong thì $_FILES cũng hết hiệu lực

honnhienh
11-06-2010, 19:59
không biêt session có lưu được cái file uplen hog ta. hog biết nữa.

phaocuusinh
12-06-2010, 02:22
Mình chưa hiểu cái tiêu đề và nội dung bạn hỏi nó giống nhau khác nhau chỗ nào.

tmp là các thư mục chứa file tạm, đến một giới hạn sẽ clear bớt.

SESSION là phiên làm việc, cũng có giá trị để xác minh phiên làm việc. kết thúc phiên thì nó tự xóa, hoặc server có đặt ngưỡng thời gian để xóa.

Mình chỉ tạm nêu vài điểm cơ bản chứ không bàn sâu xa chi tiết, vì ở đây toàn Lão Đại không dám qua mặt.

Còn ý của mình nếu là TMP hay Session thì cả 2 đều nên cấu hình trên server trước rồi sau đó kết hợp với code. Chủ yếu là đặt lịch và tạo giới hạn. Tùy ý bạn hết.

chameron
12-06-2010, 08:17
file up lên được lưu tạm vào trong tmp, và các thông tin về file đó ở trong
$_FILES ,
vì thế em muốn lưu thông tin đó vô session vì cái đoạn upload file của em nó phải qua mấy lần submit trang nữa cơ
mỗi lần submit form thì các file có thông tin trong $_FILES cũng bị clear hết hay sao í :-S

thuyduongcd
12-06-2010, 10:13
Có 2 vấn đề bạn cần quan tâm.
Thứ nhất là biến $_FILE dùng lưu thông tin về file tạm, chỉ có hiệu lực trong trang hiện tại, qua trang khác là nó không còn giá trị. Bạn vân có thể lưu giá trị này lại để dùng về sau.

Thứ hai, file tạm do bạn upload chỉ được lưu trong thư mục tạm 24 phút (= 1440 giây), đây là giá trị mặc định. Tuy nhiên, nếu có quyền, bạn có thể thay đổi giá trị này trong file cấu hình php.ini, ở dòng này:

session.gc_maxlifetime = 1440

Không biết có quy định giới hạn tối đa hay không nhưng khuyên bạn không nên đặt lớn quá vì như thế những dữ liệu tạm sẽ chiếm hết dung lượng của bạn.

vn.minh
12-06-2010, 10:16
Nếu qua nhiều bước thì tốt nhất up lên trước, rùi lưu đường dẫn lại! Hơi phí xíu :)

honnhienh
12-06-2010, 10:33
file up lên được lưu tạm vào trong tmp, và các thông tin về file đó ở trong
$_FILES ,
vì thế em muốn lưu thông tin đó vô session vì cái đoạn upload file của em nó phải qua mấy lần submit trang nữa cơ
mỗi lần submit form thì các file có thông tin trong $_FILES cũng bị clear hết hay sao í :-S

cái này chắc luu session không được. bạn phải submit sang cái sript sử ly cái file uplen hoàn thiện thì mới redirect sang form tiếp được. Mình thấy cái này phải làm theo trình tự mà. bạn phải kiểm tra file đã up ok sau đó luu no vào khu vực nào đó chưa thì mới thực hiện bước tiếp theo thì mới an toàn và bảo đảm người dùng thực hiện thành công (ở mỗi bước thành công bạn có thể dùng session luu lại các thông tin file: đường dân, tên ...). chánh tình trang khi làm một hồi rùi quay lại làm từ đầu hog biết mình bi sai bước nào nữa hi hi. cuôi cugnf thì bạn truy cập vào biến session lấy thông tin(copy file vào đâu đó) nhớ là xóa mấy cái file temp này đi. không biết cách này ộn không tại vì chưa gắp trường hợp nào như bạn cả.

chameron
15-06-2010, 13:56
cái này chắc luu session không được. bạn phải submit sang cái sript sử ly cái file uplen hoàn thiện thì mới redirect sang form tiếp được. Mình thấy cái này phải làm theo trình tự mà. bạn phải kiểm tra file đã up ok sau đó luu no vào khu vực nào đó chưa thì mới thực hiện bước tiếp theo thì mới an toàn và bảo đảm người dùng thực hiện thành công (ở mỗi bước thành công bạn có thể dùng session luu lại các thông tin file: đường dân, tên ...). chánh tình trang khi làm một hồi rùi quay lại làm từ đầu hog biết mình bi sai bước nào nữa hi hi. cuôi cugnf thì bạn truy cập vào biến session lấy thông tin(copy file vào đâu đó) nhớ là xóa mấy cái file temp này đi. không biết cách này ộn không tại vì chưa gắp trường hợp nào như bạn cả.

thank các bác ,
em copy file tạm sang folder riêng, lưu lại thông tin của $_FILES sau khi đã sửa path của tmp_name;
sau đó đến bước cần upload ,e up như bình thường , rồi xóa các file trong folder đó đi
Tại phải qua mấy bước mới cho upload cơ, khách hàng nó củ chuối :D

snoob_clo4
15-06-2010, 19:39
Này thì lưu vô session

<html>
<body>
<form method="post"
enctype="multipart/form-data">
<label for="file">Filename:</label>
<input type="file" name="file" id="file" />
<br />
<input type="submit" name="submit" value="Submit" />
</form>
</body>
</html>
<?php
session_start();
if($_FILES !=null){
$file = file_get_contents($_FILES["file"]["tmp_name"]);

$_SESSION['file'] = $file;
echo "</br>File stored to session</br>";
}
if(isset($_SESSION['file'])){
for ($i = 10; $counter <= 30; $counter ++) {
echo $_SESSION['file'];
}}
?>

honnhienh
15-06-2010, 20:09
if(isset($_SESSION['file'])){
for ($i = 10; $counter <= 30; $counter ++) {
echo $_SESSION['file'];

cái dòng này làm gì không hiểu mục đích

thuyduongcd
16-06-2010, 10:08
Làm vậy chi cho cực thân vậy? Thật ra khi làm động tác lưu file đó vào session cũng đồng nghĩa với lưu file lên disk (Mặc định session được lưu trên disk (session.save_path setting)). Vậy thì chỉ cần làm mỗi việc đơn giản là copy file sang vị trí nào đó rồi lưu lại path là xong. Cần gì phải read toàn bộ nội dung rồi cho nó save lại.
Thứ nhất, thao tác copy nhanh hơn rất nhiều so với read & write.
Thứ hai, bộ nhớ thường bị giới hạn 8M hoặc 16M. Nếu file vài chục MB thì file_get_content sẽ error.

chameron
17-06-2010, 23:18
làm theo cách của bác thuyduong la good nhất :D