Если элемент, к которому вы пытаетесь получить доступ, находится внутри iframe
, и вы пытаетесь получить к нему доступ за пределами контекста iframe
, это также приведет к сбою.
Если вы хотите получить элемент в iframe, вы можете узнать, как здесь .
Обновление за февраль 2016 года:
AWS SDK может справиться с этим гораздо больше. Посмотрите , как построить форму , и , как построить подпись . Это должно помешать вам нуждаться в пропускной способности на вашем конце, предполагая, что вам не нужно самостоятельно обрабатывать контент перед отправкой его на S3.
Лучший и самый простой способ загрузить файлы в Amazon S3 через asp.net. Посмотрите на следующий пост в блоге мной. Я думаю, что это поможет. Здесь я объяснил, от добавления корзины S3 до создания API-ключа, установки Amazon SDK и написания кода для загрузки файлов. Ниже приведен пример кода для загрузки файлов в Amazon S3 с помощью asp.net C #.
using System
using System.Collections.Generic
using System.Linq
using System.Web
using Amazon
using Amazon.S3
using Amazon.S3.Transfer
///
/// Summary description for AmazonUploader
///
public class AmazonUploader
{
public bool sendMyFileToS3(System.IO.Stream localFilePath, string bucketName, string subDirectoryInBucket, string fileNameInS3)
{
// input explained :
// localFilePath = we will use a file stream , instead of path
// bucketName : the name of the bucket in S3 ,the bucket should be already created
// subDirectoryInBucket : if this string is not empty the file will be uploaded to
// a subdirectory with this name
// fileNameInS3 = the file name in the S3
// create an instance of IAmazonS3 class ,in my case i choose RegionEndpoint.EUWest1
// you can change that to APNortheast1 , APSoutheast1 , APSoutheast2 , CNNorth1
// SAEast1 , USEast1 , USGovCloudWest1 , USWest1 , USWest2 . this choice will not
// store your file in a different cloud storage but (i think) it differ in performance
// depending on your location
IAmazonS3 client = new AmazonS3Client("Your Access Key", "Your Secrete Key", Amazon.RegionEndpoint.USWest2);
// create a TransferUtility instance passing it the IAmazonS3 created in the first step
TransferUtility utility = new TransferUtility(client);
// making a TransferUtilityUploadRequest instance
TransferUtilityUploadRequest request = new TransferUtilityUploadRequest();
if (subDirectoryInBucket == "" || subDirectoryInBucket == null)
{
request.BucketName = bucketName; //no subdirectory just bucket name
}
else
{ // subdirectory and bucket name
request.BucketName = bucketName + @"/" + subDirectoryInBucket;
}
request.Key = fileNameInS3 ; //file name up in S3
//request.FilePath = localFilePath; //local file name
request.InputStream = localFilePath;
request.CannedACL = S3CannedACL.PublicReadWrite;
utility.Upload(request); //commensing the transfer
return true; //indicate that the file was sent
}
}
Здесь вы можете использовать функцию sendMyFileToS3 для загрузки потока файлов в amazon S3. Для более подробной информации проверьте мой блог по следующей ссылке.
Загрузить файл в Amazon S3 через asp.net
Надеюсь, вышеупомянутая ссылка поможет.
Ищите библиотеку javascript для обработки загрузки этих файлов на стороне клиента. Я наткнулся на пример javascript и php . Dojo также предлагает загрузку файла s3 на стороне клиента.
ThreeSharp является библиотекой для упрощения взаимодействий с Amazon S3 в среде.NET.
необходимо будет все еще разместить логику, чтобы загрузить и отправить файлы в s3 в mvc приложении, но Вы не должны будете сохранять их на своем сервере.
Если необходимо загрузить большие файлы и отобразить индикатор выполнения, необходимо рассмотреть flajaxian компонент .
Это использует флэш-память для загрузки файлов непосредственно на Amazon S3, сохраняя пропускную способность.