Мне нужно загрузить файл в Chrome, и вам нужно загрузить некоторые параметры с тем же запросом и нужна базовая аутентификация. Я хочу использовать javascript AJAX для этого. , но хром не поддерживает sendAsBinary, как я могу это сделать?Мне нужно загрузить файл в Chrome и вам нужно ** post ** некоторые параметры с тем же запросом
function sendMsg(status){
var user = localStorage.getObject(CURRENT_USER_KEY);
var file = $("#imageFile")[0].files[0];
var boundary = '----multipartformboundary' + (new Date).getTime();
var dashdash = '--';
var crlf = '\r\n';
/* Build RFC2388 string. */
var builder = '';
builder += dashdash;
builder += boundary;
builder += crlf;
var xhr = new XMLHttpRequest();
var upload = xhr.upload;
xhr.onreadystatechange = function(){
if(xhr.readyState==4){
//
}
};
if(upload){
upload.onprogress = function(ev){
onprogress(ev);
};
}
/* Generate headers. [STATUS] */
builder += 'Content-Disposition: form-data; name="status"';
builder += crlf;
builder += crlf;
/* Append form data. */
builder += msg;
builder += crlf;
/* Write boundary. */
builder += dashdash;
builder += boundary;
builder += crlf;
/* Generate headers. [PIC] */
builder += 'Content-Disposition: form-data; name="pic"';
if (file.fileName) {
builder += '; filename="' + file.fileName + '"';
}
builder += crlf;
builder += 'Content-Type: '+file.type;
builder += crlf;
builder += crlf;
/* Append binary data. */
builder += file.getAsBinary(); //chrome do not support getAsBinary()
builder += crlf;
/* Write boundary. */
builder += dashdash;
builder += boundary;
builder += crlf;
/* Mark end of the request. */
builder += dashdash;
builder += boundary;
builder += dashdash;
builder += crlf;
xhr.open("POST", apiUrl.sina.upload, true);
xhr.setRequestHeader('content-type', 'multipart/form-data; boundary=' + boundary);
xhr.setRequestHeader('Authorization', make_base_auth_header(user.userName, user.password));
xhr.sendAsBinary(builder); //chrome do not support sendAsBinary()
xhr.onload = function(event) {
/* If we got an error display it. */
if (xhr.responseText) {
console.log(xhr.responseText);
}
};
};
THS.but таким образом я кот не установить Basic Аутентификация – QLeelulu
@QLeelulu - Я не понимаю, почему нет. Просто закодируйте комбинацию имени пользователя: пароль как обычно и добавьте ее в строку действия формы. Пользователи никогда не будут видеть размещенный URL (если это вас беспокоит), поэтому он не должен быть менее безопасным, чем другие способы. – Sparafusile
URL-адрес этого «http: // username: [email protected]» в chrome не отправит информацию об основной аутентификации. – QLeelulu