Я занимаюсь разработкой универсального приложения для Windows Phone 8.1, но использую страницу PHP, чтобы распознать некоторые шаблоны из образа, загруженного в мою службу.
Я обнаружил, что после загрузки изображения X в Azure я не могу его использовать. Я использую WebMatrix для разработки своей PHP-страницы, и когда я обновляю ее, она не показывает мне загруженные изображения, однако, когда я пытаюсь что-то опубликовать и выбираю опцию: Msgstr «Удалить файлы на сервере удаления, которых нет на моем компьютере.» Я могу видеть мои изображения. Это пример моего кода PHP:
$uploaddir = getcwd();
$uploadfile = $uploaddir . "/" . basename($_FILES['userfile']['name']);
if (move_uploaded_file($_FILES['userfile']['tmp_name'], $uploadfile)) {
chmod($uploadfile, 0755);
$Test = new Display($_FILES['userfile']['name']);
echo '{"result": "' . $Test->getNumber($_REQUEST['color'], false) . '"}';
//unlink($uploadfile);
} else {
echo '{"result": "-1"}';
}
Я хотел бы знать, в чем может быть моя ошибка, потому что я не понимаю, почему я могу получить доступ с URL, слишком мало, я не могу его использовать, может быть, это как я назначил разрешения, но с или без CHMOD, это не меняется вообще. Я даже пробовал другие хостинги, и проблема та же, когда я вхожу в диспетчер файлов, там только мои файлы PHP, и он не позволяет мне управлять изображением.
Это мой код Windows Phone для загрузки изображения, если это необходимо:
byte[] ConvertBitmapToByteArray()
{
WriteableBitmap bmp = bitmap;
using (Stream stream = bmp.PixelBuffer.AsStream())
{
MemoryStream memoryStream = new MemoryStream();
stream.CopyTo(memoryStream);
return memoryStream.ToArray();
}
}
public async Task<string> Upload()
{
try
{
using (var client = new HttpClient())
{
using (var content =
new MultipartFormDataContent())
{
byte[] data = ConvertBitmapToByteArray();
using (var stream = new InMemoryRandomAccessStream())
{
// encoder *outputs* to stream
var encoder = await BitmapEncoder.CreateAsync(BitmapEncoder.BmpEncoderId, stream);
// encoder's input is the bitmap's pixel data
encoder.SetPixelData(BitmapPixelFormat.Bgra8, BitmapAlphaMode.Straight,
(uint)bitmap.PixelWidth, (uint)bitmap.PixelHeight, 96, 96, data);
await encoder.FlushAsync();
content.Add(new StreamContent(stream.AsStream()), "userfile", fileNewImage);
using (
var message =
await client.PostAsync("http://xplace.com/uploadtest.php", content))
{
var input = await message.Content.ReadAsStringAsync();
return input;
}
}
}
}
}
catch (Exception ex)
{
return null;
}
}
Спасибо за ваши достойные знания и опыт.
Создайте учетную запись для хранения больших двоичных объектов и добавьте общедоступный контейнер. Чтобы сохранить файл, сохраните его в контейнере для хранения больших двоичных объектов. Затем вы можете получить доступ к изображению, как и с любым другим изображением.
Вот учебник по Azure: http://azure.microsoft.com/en-us/documentation/articles/storage-dotnet-how-to-use-blobs/
Кроме того, вы не можете создавать папки в контейнере, но вы можете использовать соглашение об именах для blobrefname, чтобы создать идею контейнера. Кроме того, вы можете присоединить домен к облачной службе, если хотите, чтобы URL имел определенный вид.
Надеюсь это поможет!
ура
ПРОЧИТАЙТЕ СВОЙ ВОПРОС СНОВА — И похоже, что это больше на стороне клиента.
Вот что я обычно делаю, чтобы прикрепить файл к MultipartFormDataContent
:
MultipartFormDataContent content = new MultipartFormDataContent();
FileInfo info = new FileInfo(currFileLoc);
string contentMediaType = null;
//This is a Dictionary<string, string> that takes in the file
//extension, and returns the media type (e.g. "image/jpeg")
GlobalVariables.ApprovedMediaTypes.TryGetValue(
info.Extension.ToLower()
, out contentMediaType);
//If the dictionary doesn't return a result
//then it's not a supported file type
if (contentMediaType == null)
throw new Exception(
String.Format("The file \"{0}\" is an unsupported file type.", info.Name));
ByteArrayContent currFile = new ByteArrayContent(File.ReadAllByte(currFileLoc));
currFile.Headers.ContentType = new MediaTypeWithQualityHeaderValue(contentMediaType);
content.Add(currFile, currFileLoc, currFileLoc);
Я звоню. Может быть, вы нашли другой вариант с хранилищем BLOB-объектов. Наконец, если вы загружаете большие файлы, вы можете захотеть посмотреть загрузку кусками.
~ Приветствия
Других решений пока нет …