Bạn phải có tập lệnh phía máy chủ để xử lý yêu cầu của mình, nó không thể được thực hiện bằng JavaScript.
Để gửi dữ liệu thô mà không cần uriencoding hoặc thoát các ký tự đặc biệt đến PHP và lưu nó dưới dạng tệp ____99 mới, bạn có thể gửi yêu cầu AJAX bằng phương thức
if[!empty[$_POST['data']]]{
$data = $_POST['data'];
$fname = mktime[] . ".txt";//generates random name
$file = fopen["upload/" .$fname, 'w'];//creates new file
fwrite[$file, $data];
fclose[$file];
}
0 và if[!empty[$_POST['data']]]{
$data = $_POST['data'];
$fname = mktime[] . ".txt";//generates random name
$file = fopen["upload/" .$fname, 'w'];//creates new file
fwrite[$file, $data];
fclose[$file];
}
1 như:JS:
var data = new FormData[];
data.append["data" , "the_text_you_want_to_save"];
var xhr = [window.XMLHttpRequest] ? new XMLHttpRequest[] : new activeXObject["Microsoft.XMLHTTP"];
xhr.open[ 'post', '/path/to/php', true ];
xhr.send[data];
PHP:
if[!empty[$_POST['data']]]{
$data = $_POST['data'];
$fname = mktime[] . ".txt";//generates random name
$file = fopen["upload/" .$fname, 'w'];//creates new file
fwrite[$file, $data];
fclose[$file];
}
Edit:
Như Florian đã đề cập dưới đây, không cần phải dự phòng XHR vì
if[!empty[$_POST['data']]]{
$data = $_POST['data'];
$fname = mktime[] . ".txt";//generates random name
$file = fopen["upload/" .$fname, 'w'];//creates new file
fwrite[$file, $data];
fclose[$file];
}
1 không được hỗ trợ trong các trình duyệt cũ hơn [trình duyệt formdata compatibiltiy], vì vậy bạn có thể khai báo biến XHR là:var xhr = new XMLHttpRequest[];
Ngoài ra, xin lưu ý rằng điều này chỉ hoạt động cho các trình duyệt hỗ trợ
if[!empty[$_POST['data']]]{
$data = $_POST['data'];
$fname = mktime[] . ".txt";//generates random name
$file = fopen["upload/" .$fname, 'w'];//creates new file
fwrite[$file, $data];
fclose[$file];
}
1 như IE +10. Chào mừng bạn đến với một hướng dẫn về cách tạo và lưu các tệp trong JavaScript. Vâng, đây sẽ là một quá trình phức tạp cho người mới bắt đầu. Để giữ cho mọi thứ đơn giản-lưu các tệp trên các nodej phía máy chủ là một cách dễ dàng, nhưng thật khó để lưu trực tiếp các tệp ở phía máy khách vì các hạn chế bảo mật. Điều đó nói rằng, có nhiều phương pháp chúng ta có thể sử dụng. Các cách có thể để tạo và lưu các tệp trong JavaScript là:
4if[!empty[$_POST['data']]]{
$data = $_POST['data'];
$fname = mktime[] . ".txt";//generates random name
$file = fopen["upload/" .$fname, 'w'];//creates new file
fwrite[$file, $data];
fclose[$file];
}
5if[!empty[$_POST['data']]]{
$data = $_POST['data'];
$fname = mktime[] . ".txt";//generates random name
$file = fopen["upload/" .$fname, 'w'];//creates new file
fwrite[$file, $data];
fclose[$file];
}
6if[!empty[$_POST['data']]]{
$data = $_POST['data'];
$fname = mktime[] . ".txt";//generates random name
$file = fopen["upload/" .$fname, 'w'];//creates new file
fwrite[$file, $data];
fclose[$file];
}
7if[!empty[$_POST['data']]]{
$data = $_POST['data'];
$fname = mktime[] . ".txt";//generates random name
$file = fopen["upload/" .$fname, 'w'];//creates new file
fwrite[$file, $data];
fclose[$file];
}
8if[!empty[$_POST['data']]]{
$data = $_POST['data'];
$fname = mktime[] . ".txt";//generates random name
$file = fopen["upload/" .$fname, 'w'];//creates new file
fwrite[$file, $data];
fclose[$file];
}
9if[!empty[$_POST['data']]]{
$data = $_POST['data'];
$fname = mktime[] . ".txt";//generates random name
$file = fopen["upload/" .$fname, 'w'];//creates new file
fwrite[$file, $data];
fclose[$file];
}
0var xhr = new XMLHttpRequest[];
1var xhr = new XMLHttpRequest[];
2var xhr = new XMLHttpRequest[];
3var xhr = new XMLHttpRequest[];
4var xhr = new XMLHttpRequest[];
5var xhr = new XMLHttpRequest[];
6var xhr = new XMLHttpRequest[];
Điều đó bao gồm những điều cơ bản, nhưng chúng ta hãy đi qua các ví dụ chi tiết trong hướng dẫn này - đọc tiếp!
Tôi đã bao gồm một tệp zip với tất cả các mã nguồn ví dụ khi bắt đầu hướng dẫn này, vì vậy bạn không phải sao chép mọi thứ, hoặc nếu bạn chỉ muốn đi thẳng vào.
Slide nhanh
MỤC LỤC
Tải xuống & ghi chú
Thứ nhất, đây là liên kết tải xuống đến mã ví dụ như đã hứa.
Ghi chú nhanh
Nếu bạn phát hiện ra một lỗi, hãy bình luận bên dưới. Tôi cũng cố gắng trả lời các câu hỏi ngắn, nhưng đó là một người so với toàn bộ thế giới, nếu bạn cần câu trả lời khẩn cấp, vui lòng kiểm tra danh sách các trang web của tôi để nhận trợ giúp lập trình.
Mã hóa ví dụ Tải xuống
Nhấn vào đây để tải xuống & nbsp; mã nguồn, tôi đã phát hành nó theo giấy phép MIT, vì vậy hãy thoải mái xây dựng trên đó hoặc sử dụng nó trong dự án của riêng bạn.
Được rồi, bây giờ chúng ta hãy đi vào các cách khác nhau để lưu các tệp trong JavaScript.
Phương pháp 1] Sử dụng trình bảo vệ tệp
1-filesaver.js
// [B] "SAVE AS"
var myFile = new File[["CONTENT"], "demo.txt", {type: "text/plain;charset=utf-8"}];
saveAs[myFile];
Cảm ơn trời, một người đã làm tất cả những công việc khó khăn. Đây là một trong những cách trình duyệt chéo dễ nhất và an toàn nhất của người Viking để lưu tệp-
- Đơn giản chỉ cần tải & nbsp; ____ ____ 27 từ CDN.
- Tạo đối tượng ________ 28 & nbsp; và bật nó vào & nbsp; ________ 29.
Phương pháp 2] Tạo tệp từ Blob & Force Tải xuống
2-blob-download.html
// [A] CREATE BLOB OBJECT
var myBlob = new Blob[["CONTENT"], {type: "text/plain"}];
// [B] CREATE DOWNLOAD LINK
var url = window.URL.createObjectURL[myBlob];
var anchor = document.createElement["a"];
anchor.href = url;
anchor.download = "demo.txt";
// [C] "FORCE DOWNLOAD"
// NOTE: MAY NOT ALWAYS WORK DUE TO BROWSER SECURITY
// BETTER TO LET USERS CLICK ON THEIR OWN
anchor.click[];
window.URL.revokeObjectURL[url];
document.removeChild[anchor];
Do các hạn chế bảo mật, JavaScript phía máy khách không thể truy cập trực tiếp hệ thống tệp. Đó là, không có văn bản trực tiếp và tải các tệp trên máy tính của người dùng. Nhưng đây là cách làm vòng xoay - tạo một đối tượng Blob [nhị phân] để chứa tất cả dữ liệu, sau đó đặt liên kết tải xuống cho nó.
Phương pháp 3] Tải Blob lên máy chủ
JavaScript
3a-blob-upload.html
function blobajax [] {
// [A] CREATE BLOB OBJECT
var myBlob = new Blob[["CONTENT"], {type: "text/plain"}];
// [B] FORM DATA
var data = new FormData[];
data.append["upfile", myBlob];
// [C] AJAX UPLOAD TO SERVER
fetch["3b-upload.php", {
method: "POST",
body: data
}]
.then[[res] => { return res.text[]; }]
.then[[txt] => { console.log[txt]; }];
}
PHP
3b-blob-upload.php