ajax — какой правильный способ загрузки в хранилище файлов Azure (НЕ BLOB-хранилище) с использованием переполнения стека

Привет, ребята, извините за мой плохой английский. Я хотел бы задать этот вопрос, потому что мне трудно загружать файл (не для создания файла, а для загрузки) в хранилище файлов Azure (НЕ НАСТОЯЩЕМУ ХРАНИЛИЩА БЛОКА). (при попытке выполнить код / ​​запустить в браузере Google Chrome ошибка не возникает. Но затем, когда я просматриваю файлы хранилища Azure, файл не загружается.)

так что в основном это моя кнопка загрузки базового кода.

<input type="file" class="btn btn-default" name="resFile" id="resFile" value="" />
<input type="submit" class="btn btn-default" value="Submit" data-inline="true"/>
<div id="res"></div>

тогда это мой скрипт для вызова ajax-запроса.

 $(document).ready(function () {
$("form").on('submit', (function (e) {
e.preventDefault();

$.ajax({
url: "functions/function.php", // Url to which the request is send
type: "POST",             // Type of request to be send, called as method
data: new FormData(this), // Data sent to server, a set of key/value pairs (i.e. form fields and values)
contentType: false,       // The content type used when sending data to the server.
cache: false,             // To unable request pages to be cached
processData: false,        // To send DOMDocument or non processed data file it is set to false
success: function (data)   // A function to be called if request succeeds
{
$("#res").hide().html(data).fadeIn('fast');
}
});
}));
});

и, наконец, мой PHP-код для загрузки:

<?php
require_once "../dependancies/vendor/autoload.php";

use MicrosoftAzure\Storage\Common\Exceptions\ServiceException;
use MicrosoftAzure\Storage\Common\Internal\Resources;
use MicrosoftAzure\Storage\Common\Internal\StorageServiceSettings;
use MicrosoftAzure\Storage\Common\Models\Range;
use MicrosoftAzure\Storage\Common\Models\Metrics;
use MicrosoftAzure\Storage\Common\Models\RetentionPolicy;
use MicrosoftAzure\Storage\Common\Models\ServiceProperties;
use MicrosoftAzure\Storage\Common\ServicesBuilder;
use MicrosoftAzure\Storage\Common\SharedAccessSignatureHelper;
use MicrosoftAzure\Storage\File\Models\CreateShareOptions;
use MicrosoftAzure\Storage\File\Models\ListSharesOptions;
use MicrosoftAzure\Storage\File\FileRestProxy;

$connectionString = 'DefaultEndpointsProtocol=https;AccountName=MYACCNAME;AccountKey=MYACCKEY==';
$fileClient = ServicesBuilder::getInstance()->createFileService($connectionString);
uploadFile($fileClient);
function uploadFile($fileClient)
{
$content = $_FILES["resFile"]["tmp_name"];
$contentloc = $_FILES["resFile"]["tmp_name"];

$shareName = 'myDISK';
$range = new Range(0, 511);
try {
$fileClient->createFileFromContentAsync($shareName, $contentloc, $content, null);

echo "<p style='color:green;'>File Uploaded successfully </p>";
} catch (ServiceException $e) {
$code = $e->getCode();
$error_message = $e->getMessage();
echo $code . ": " . $error_message . PHP_EOL;
}
}
?>

Это изображение, на котором я пытаюсь загрузить файл:

нажмите здесь, чтобы увидеть изображение, где я пытаюсь загрузить файл
[РЕДАКТИРОВАТЬ] я добавил это в свой обработчик ajax

,
error: function (data)
{
console.log(data);
},
failure: function (data)
{
console.log(data);
}
[ОТВЕТ]

отдельное спасибо @ Аарону Чену и @ Гаураву Мантри.

просто добавьте file_get_contents, чтобы получить сам файл.
Измените имя общего ресурса на строчные.
и вместо того, чтобы использоватьcreateFileFromContentAsync«использовать»createFileFromContent

1

Решение

Во-первых, вы должны убедиться, что у вас есть общий файловый ресурс с именем mydisk в хранилище файлов Azure, а затем попробуйте следующий код. Я проверил это, оно должно работать.

function uploadFile($fileClient) {

// Get the content of the uploaded file
$content = file_get_contents($_FILES["resFile"]["tmp_name"]);
// Get uploaded file name
$filename = $_FILES["resFile"]["name"];

// Change the share name to mydisk (all lowercase)
$shareName = 'mydisk';
try {
// Use createFileFromContent instead of createFileFromContentAsync
$fileClient->createFileFromContent($shareName, $filename, $content, null);
echo "<p style='color:green;'>File Uploaded successfully </p>";

} catch (ServiceException $e) {
$code = $e->getCode();
$error_message = $e->getMessage();
echo $code . ": " . $error_message . PHP_EOL;
}
}
0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]