Hướng dẫn upload binary file in php - tải lên tệp nhị phân trong php
Đã hỏi 7 năm, 8 tháng trước 7 years, 8 months ago Show Đã xem 8k lần 8k times Tôi đang tìm kiếm một cách để cho phép tải lên tệp nhưng thay vì viết tệp vào đĩa trên máy chủ web, tôi muốn lưu trữ nội dung nhị phân trong một biến. Tôi đã tìm thấy một ví dụ đơn giản để thực sự thực hiện tải lên nhưng tôi không thể tìm ra cách để ngăn chặn việc viết vào tệp và thay vào đó giữ nó trong bộ nhớ. Có thể làm điều này và nếu vậy làm thế nào?
Đã hỏi ngày 5 tháng 3 năm 2015 lúc 7:22Mar 5, 2015 at 7:22 Nếu bạn chỉ cần tệp đã tải lên cho thời gian chạy PHP thì
Sau này nếu bạn cần lưu trữ nó trên MySQL DB, bạn luôn có thể thực hiện 'AddSlashes ()' cho nó. Đã trả lời ngày 5 tháng 3 năm 2015 lúc 7:42Mar 5, 2015 at 7:42
1 Ngày 31 tháng 7 năm 2012 • 12 phút Đọc• 12 min read Tôi đã làm việc trong một dự án mà tôi phải gửi và nhận các tệp nhị phân đến và từ API REST, vì vậy tôi quyết định ghi lại một số mã tôi đã viết. Hãy nhớ rằng tôi đã trích xuất tất cả các đoạn mã này từ một lớp PHP tùy chỉnh mà tôi đã viết, vì vậy nếu bạn làm việc với API, tôi sẽ khuyến khích bạn tạo một lớp của riêng bạn. Trước khi bạn có thể gửi tệp nhị phân đến API, bạn phải lấy nó từ đâu đó. Trong dự án của tôi, tập tin đó đến từ một hình thức. Hình thức có thể đơn giản như thế này: Lưu ý Thuộc tính Lấy tệp đã gửiThông thường khi bạn xử lý một biểu mẫu, nội dung được tìm thấy bên trong biến 3 toàn cầu, tuy nhiên dữ liệu tệp nằm trong biến 4 toàn cầu.Nếu bạn in nội dung của 4 trên trang, biểu mẫu đã được gửi, bạn sẽ thấy một cái gì đó như:
Điều khác thường về mảng này là thay vì nhóm mỗi dữ liệu tệp trong một mảng, mỗi thông tin về một tệp được nhóm lại với nhau. Vì vậy, các giá trị tại Index 6 trong 7, 8, 9, 0 và 1 thuộc về một tệp.Dữ liệu tệp nhị phân được đặt trong một bộ lưu trữ tạm thời trên máy chủ của bạn. Trong trường hợp này, tại 2.Gửi nội dung nhị phân qua CurlĐoạn trích sau đây gửi tệp nhị phân đến URL:
Hãy nói về từng dòng này, bởi vì một số điều này sẽ phụ thuộc vào các yêu cầu của API bạn đang sử dụng và có thể không cần thiết.
Cuối cùng, hãy chú ý dòng cuối cùng:
Trong trường hợp của tôi, tôi biết rằng phản hồi mà tôi đã nhận được từ API sẽ ở định dạng JSON, đó là lý do tại sao tôi lại giải mã nó. Ví dụ, bạn có thể không cần điều này nếu bạn nhận lại phản hồi trong XML. Điều này hoàn thành việc gửi một tập tin nhị phân qua Curl. Tiếp theo, chúng tôi sẽ xem xét truy xuất tập tin đó. Lấy nội dung nhị phân thông qua CurlTại đây, cách lấy một tệp nhị phân:
Chúng tôi không phải đi qua bất cứ điều gì ngoại trừ:
Bây giờ bạn có tệp nhị phân với các tiêu đề được lưu trữ trong 4.Đưa tệp lại cho người dùngHãy cùng tiếp tục về cách cung cấp lại tệp cho người dùng. Bạn có thể lưu trữ tệp trên máy chủ và cung cấp cho người dùng một URL vào tệp hoặc bạn chỉ có thể để PHP xử lý tất cả những thứ đó một cách nhanh chóng và chỉ cần nhắc người dùng lưu tệp. Đây là cách tôi đã làm điều đó:
Tôi muốn chạm vào hàm trên dòng 11: 5Trong trường hợp của tôi, tệp nhị phân có thêm không gian ở đầu tệp. Hàm 6 loại bỏ điều đó. Tôi không chắc chắn liệu không gian đó đến từ API hay từ 7 trên dòng 1, vì vậy nếu điều này không hoạt động cho bạn, hãy thử thay đổi dòng đó thành: 8Hy vọng rằng thông tin này sẽ làm sáng tỏ cách đăng và truy xuất các tệp ở định dạng nhị phân. Nếu bạn có bất kỳ câu hỏi, hãy để chúng trong một bình luận dưới đây. Hình ảnh nổi bật của Alexander Sinn. Trước đây được đăng trong WordPress và chuyển sang Ghost. Maheshmay 14, 2013 lúc 6:28 sáng Xin chào , Ryan Sechrestmay 23, 2013 lúc 7:53 tối Sechrest Bạn đã thử lưu trữ hình ảnh trong một tệp tạm thời, để bạn có thể nhúng nó vào hộp ưa thích chưa? Devmay 31, 2013 lúc 1:16 chiều Xin chào, bạn có thể gợi ý cho tôi về cách tôi có thể xác minh rằng tệp của tôi được tải lên chính xác lên máy chủ không? 1) Tôi có thể gửi một số loại tổng kiểm tra tệp đến máy chủ bằng Curl không? để máy chủ cũng tính toán tổng kiểm tra trên tệp đã nhận và so sánh hai tổng kiểm tra và trả lời với mã phản hồi thích hợp. Ryan Sechrestmay 31, 2013 lúc 2:25 chiều Sechrest Bạn có thể tạo một tập lệnh trên máy chủ mong đợi hai giá trị: tổng kiểm tra và tên tệp. Sau đó, bạn có thể đăng hai giá trị đó bằng cách sử dụng Curl. Sau đó, máy chủ sẽ tính toán tổng kiểm tra của tệp hiện có và so sánh nó với những gì bạn đã gửi. Nếu nó phù hợp, bạn có thể trả về một cái gì đó như9 và nếu nó không, bạn có thể trả lại Bharat Masimukkudecember 20 tháng 12 năm 2013 lúc 2:22 sáng Xin chào ryan Ryan Sechrestdecember 20 tháng 12 năm 2013 lúc 4:26 chiều Bạn đã thử lệnh Curl của mình thông qua dòng lệnh và nó có cung cấp cho bạn phản hồi mà bạn đang tìm kiếm không? Nếu vậy, bạn đã thử chuyển đổi nó thành PHP và không thành công? Nếu vậy, hãy đăng mã PHP bạn đã thử trong một ý chính để tôi có thể xem nó. Manishmarch 11, 2014 lúc 9:00 sáng Hello, Ryan Sechrestmarch 11, 2014 lúc 9:09 sáng Tôi sẽ cần thêm một chút thông tin. Những gì cụ thể là làm việc và bạn đang nhận được phản hồi nào? Khi bạn nói rằng nó không hoạt động nữa, nó có hoạt động cho bạn trước đây không? Manishmarch 12, 2014 lúc 2:57 sáng Xin chào ryan, Ryan Sechrestmarch 12, 2014 lúc 9:13 sáng Đầu tiên, tôi sẽ lặp lại0 và PHPDeveloperMay 7, 2014 lúc 10:16 sáng Ryan,
Nhưng khi tôi thấy đầu ra của mình từ4, tôi thấy loại nội dung đó vẫn là Ryan Sechrestmay 7, 2014 lúc 11:59 sáng @phpdeveloper
Ngoài ra, liên quan đến việc bạn không nhận được tệp, bạn đã kiểm tra4 và nó trống? PHPDeveloperMay 7, 2014 lúc 1:22 chiều Ryan, 0Vâng,4 là trống. Ryan Sechrestmay 7, 2014 lúc 5:04 chiều OK, vì vậy tôi đã thiết lập một môi trường cục bộ, chạy PHP 5.5.12 và Curl 7.19.7, thiết lập thử nghiệm sau: 1Trong đó2 chứa những điều sau: 2Và tôi đã nhận được đầu ra sau: 3Hãy thử mã và xem bạn có nhận được kết quả khác không. Nếu điều này không hoạt động, hãy đảm bảo các quyền hình ảnh là chính xác, hãy thử một hình ảnh khác (có lẽ nhỏ hơn) và đảm bảo PHP có thể ghi vào thư mục3. Tôi về cơ bản nghĩ rằng nó có một cái gì đó khác với mã của bạn. PHPDeveloperMay 8, 2014 lúc 9:55 sáng Ryan, PHPDeveloperMay 8, 2014 lúc 11:44 sáng Ryan, Ryan Sechrestmay 8, 2014 lúc 11:49 sáng Tuyệt vời, rất vui khi nghe (trừ phần mà chúng tôi không biết những gì thực sự gây ra vấn đề). Brian Andersondecember tháng 1 năm 2014 lúc 4:50 chiều Ryan, tôi hy vọng bạn vẫn đang theo dõi chủ đề này. Cảm ơn bạn trước vì đã xem xét điều này! Tôi cảm thấy khá ngu ngốc về điều này và sẵn sàng trả tiền cho người khác thông minh về một thỏa thuận tư vấn. 4Đây là mã nhận của tôi: 5Các biến của tôi được trả về là: 6Ryan Sechrestdecember tháng 15 năm 2014 lúc 3:08 sáng Chao Brian, Ikramapril 3, 2015 lúc 2:23 chiều Chào Ryan, 7Máy chủ đang tạo lỗi. 8Xin vui lòng, hướng dẫn Jignesh Borichajune 17, 2015 lúc 9:14 sáng Chào Ryan, Xin vui lòng, hướng dẫn Jignesh Borichajune 17, 2015 lúc 9:14 sáng Cảm ơn bạn đã giải thích ngắn gọn của bạn. Nó đã cứu ngày của tôi. Các đồng đội của tôi đã có rất nhiều vấn đề nhưng bài đăng của bạn mà tôi đã thấy đã cứu họ rất nhiều. Chúng tôi rất biết ơn bạn. Trân trọng. Cảm ơn bạn 9HITESHFEBRIMER THÁNG 8, 2018 lúc 12:25 sáng Cần giúp tôi Trong việc gửi tệp thành công trong http post post yêu cầu, nó không hoạt động trong phạm vi Bạn có thể cho tôi biết để gửi tệp trong phương thức HTTP, đặt phương thức và cách để có được nó ở phía máy chủ. Cảm ơn bạn Vijaysinh Parmaraugust 27, 2019 lúc 1:05 chiều Tôi đang cố gắng tạo mã để tải xuống tệp thành trình duyệt, dữ liệu của tôi ở DB được tải lên dưới dạng tệp nhị phân bằng cách sử dụng chức năng tải lên .. Tôi có thể tải xuống các tệp như6, Viper503April 22, 2020 lúc 12:02 tối Cảm ơn bạn rất nhiều người đàn ông, tùy chọn chuyển nhị phân đã bị thiếu trong mã của tôi và điều đó khiến tôi bị mắc kẹt trong khoảng 3 giờ cho đến khi tôi đến đây. Cuối cùng tôi đã kết nối với API của mình và thành công nhận được phản hồi, tôi không có lời để cảm ơn bạn. Lời chào hỏi! 0Ryan Sechrestapril 22, 2020 lúc 12:05 tối PHP có thể phục vụ nội dung nhị phân?Cùng một tập lệnh PHP không thể gửi đến trình duyệt cả HTML và dữ liệu nhị phân. Do đó, điều rất quan trọng là tập lệnh này không xuất bất cứ thứ gì vào trình duyệt ngoại trừ dữ liệu đó: không HTML, không có văn bản thuần túy, thậm chí không phải là một khoảng trống.. Thus, it's very important that this script does not output anything to the browser except for that data: no HTML, no plain text, not even an empty space.
Làm thế nào có thể tạo tệp tải lên trong PHP?Tải lên tệp PHP.. Định cấu hình tệp "php.ini".Đầu tiên, đảm bảo rằng PHP được cấu hình để cho phép tải lên tệp..... Kiểm tra nếu tệp đã tồn tại.Bây giờ chúng ta có thể thêm một số hạn chế..... Giới hạn kích thước tệp.Trường đầu vào tệp trong biểu mẫu HTML của chúng tôi ở trên được đặt tên là "Filetoupload"..... Giới hạn loại tệp..... Hoàn thành Tải lên Tập lệnh Php .. Các tệp $ _ trong PHP là gì?PHP $ _FILES Biến được xác định trước toàn cầu $ _Files là một mảng kết hợp có chứa các mục được tải lên qua phương thức bài HTTP.Tải lên một tệp yêu cầu biểu mẫu phương thức bài HTTP với thuộc tính Enctype được đặt thành nhiều dữ liệu/hình thức.an associative array containing items uploaded via HTTP POST method. Uploading a file requires HTTP POST method form with enctype attribute set to multipart/form-data.
TMP_NAME trong Tải lên tệp PHP là gì?TMP_NAME là tên tạm thời của tệp được tải lên được tạo tự động bởi PHP và được lưu trữ trên thư mục tạm thời trên máy chủ.Tên là tên gốc của tệp là lưu trữ trên máy cục bộ.the temporary name of the uploaded file which is generated automatically by php, and stored on the temporary folder on the server. name is the original name of the file which is store on the local machine. |